/* 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":59066,"date":"2026-05-20T14:19:52","date_gmt":"2026-05-20T14:19:52","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=59066"},"modified":"2026-05-20T14:19:53","modified_gmt":"2026-05-20T14:19:53","slug":"betfred-anticipate-bonus-allege-up-to-two-hundred-100-percent-free-spins","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/betfred-anticipate-bonus-allege-up-to-two-hundred-100-percent-free-spins\/","title":{"rendered":"Betfred Anticipate Bonus: Allege up to two hundred 100 percent free Spins"},"content":{"rendered":"

Betfred allows all of the big fee strategies, enabling users to deposit immediately and you will withdraw easily. You to disadvantage away from Betfred Gambling establishment was previously its restricted real time dealer selection, however now he has got nearly 90 other live video game. Extremely web based casinos split its game into the slots, table game, real time dealer games together with people, which means this variety of showing the alternatives isn\u2019t to your taste. Which legendary British brand has grown to become beating the industry of on line casinos, and it is packed with thrill. Contacted alive talk with problematic, amicable mentor and you will procedure is arranged immediately. My personal kid keeps really serious head injury in order I don\u2019t provides far spare time, I really like a while on this site.<\/p>\n

When the indeed there\u2019s zero manifestation of they, we wouldn\u2019t recommend using chance. Merely to inform you, online casinos display what throughout the certification into the a visible room. Over at All the British Casino, you\u2019ll see finest alternatives out-of Development Gaming and NetEnt. If one thing, certain United kingdom web based casinos learn how to give the newest snacks. We all like a desired incentive, don\u2019t i?<\/p>\n

Routing try intuitive, games weight quickly, and the build is actually enhanced having reduced windows instead of dropping top quality. Alexander inspections all real money casino into the the shortlist offers the high-top quality experience users need. He spends their big expertise in a to be sure the birth away from outstanding articles to aid players across the trick around the world segments. Alexander Korsager has been immersed in the web based casinos and you can iGaming to have more than 10 years, while making your a working Chief Playing Officer from the Gambling establishment.org. To have ideal being compatible and you can a fast start to the mobile gambling experience, the fresh mobile website is the better path to take.<\/p>\n

We utilized the software to my new iphone 4 to access online game and you may found it become fully secure, which have brief packing online game a keen zero slowdown otherwise bugs. Here\u2019s how Yaass Casino<\/a> gambling enterprise Betfred really works in the a couple most other trick player experiences. Members from the Betfred makes entry to a range of Secure Betting gadgets such deposit limitations, go out outs and fact checks, together with around\u2019s a self analysis questionnaire also. Put differently, you\u2019lso are protected high quality video game choices! The 3 groups \u2018Casino\u2019, \u2018Games\u2019, and you can \u2018Vegas\u2019 is a little confusing and you also\u2019ll pick a number of overlapping between them too.<\/p>\n

Possibly gambling enterprises impose wagering conditions on the incentives, and others wear\u2019t. Overall, the fresh app provides a pleasant betting sense to help you users which can be designed for easy navigation and smooth running. Members don\u2019t have to deposit fund for him or her, and so they can allege this type of everyday.<\/p>\n

The thing one confuses me personally will there be\u2019s not a way to filter video game of the provider despite the casino that have you to advice able. The newest live local casino choices are common provided with Playtech, which is good, nonetheless they don\u2019t provides Progression Gambling, which is just a bit of an effective bummer. In order to complete the online game possibilities which have high quality titles, Betfred has teamed with a number of games makers such as Microgaming, Formula IGT, and you will Yellow Tiger, as well as others.<\/p>\n

A comparable requirements apply with the specialized site therefore the mobile app. Real time streaming covers chose recreations fits, that have football, tennis, cricket in the focus. Webpages navigation spends a remaining-to-correct move to have brief bets toward internet casino and you will sportsbook. Navigation remains consistent having local casino play and you may wagering regarding the United kingdom.<\/p>\n

This type of lotto-layout games are simple to enjoy and provide glamorous earnings which have quick limits. Betfred Gambling establishment lovers with many of the most respected and you can creative software organization regarding iGaming industry. Out of complete-day results to user specials and reside in-gamble bets, there\u2019s some thing per version of bettor. Given that a formal spouse of one’s Super Group, Betfred also provides exclusive possibility, advertisements, and you can market depth toward rugby category games.<\/p>\n

In the event it doesn\u2019t augment the difficulty, get in touch with support thanks to real time chat or email. Join, create an effective deoosit, and you will stick to the bonus advice towards the authoritative web site away from Betfred Gambling establishment. Go to the Betfred gambling enterprise certified site and start examining now. If you\u2019re home or out, the latest Betfred official web site really works as well to your cellular once the it can towards desktop.<\/p>\n

Fully subscribed and you will regulated by the British Gambling Fee, Betfred gambling establishment is renowned for punctual withdrawals, worthwhile local casino advertisements and also for quality conditions during the. Primarily known for sports betting, the fresh Betfred on-line casino changed to your a superb iGaming center along with dos,700 titles. If you want a safe casino that give a quality all-bullet betting feel, you then can definitely\u2019t get wrong with Betfred casino. The working platform was controlled and you may authorized from the Uk Playing Percentage features a strong reputation as a trusted and you can legitimate gaming space. Therefore, how come Betfred stack up against other leading online casinos? Betfred detachment times try quick, yet not instant.<\/p>\n

It has been having Betfred Gambling establishment as 2018 in fact it is where you\u2019ll look for specialist-led video game, online streaming during the genuine-returning to the essential realistic step. The selection of online game to be had is pretty good on step 1,500+, which will keep really members satisfied.Off a slot machines views, there\u2019s still a great bequeath around the jackpot online game, plus titles such as the Ages of the newest Gods show. You\u2019ll don’t have any troubles right here.Basically was being awesome important, there\u2019s most likely some place having upgrade to your artistic front.<\/p>\n

However, of numerous web based casinos cannot bring one no betting incentives as there is actually a danger of losing profits when the a great deal of some one victories big. Since these “keep earnings” income are quite good, you can wonder why Uk web based casinos bring such bonuses so you’re able to professionals. No wagering totally free spins are the most useful bonuses as you’re able score winnings aside easily. We get a tiny payment regarding the casinos on the internet when the your create the latest membership thanks to our website links, however, i only accept an educated workers in the industry since our very own people.<\/p>\n

Get guidance and support 7 days per week thru real time talk, email address, and you can our very own on the internet Let Middle. Our very own ios and android software weight easily, with Deal with ID or fingerprint log on, user-friendly look, and you may lightning-punctual lobbies. Offer users review tips at the start, that have full T and Cs one simply click out. Day-after-day jackpots are designed to pay because of the a stated go out every day, which have alive countdowns and you will current pot beliefs. Clear promotions, easy terms and conditions, and you may a cellular-basic platform build Betfred online slots very easy to appreciate wherever your play.<\/p>\n

Some are simple and fast to try out, while some want alot more strategy. The fresh Betfred local casino specialized website is sold with a multitude of games. All you need is right here into the Betfred specialized web site. You\u2019ll discover familiar video games and easy ways to deposit and you can withdraw. Betfred Bingo also provides casino games and you can wagering. Betfred Bingo even offers assistance through alive talk, current email address, and you will cellphone.<\/p>\n","protected":false},"excerpt":{"rendered":"

Betfred allows all of the big fee strategies, enabling users to deposit immediately and you will withdraw easily. You to disadvantage away from Betfred Gambling establishment was previously its restricted real time dealer selection, however now he has got nearly 90 other live video game. Extremely web based casinos split\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-59066","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59066","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=59066"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59066\/revisions"}],"predecessor-version":[{"id":59067,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59066\/revisions\/59067"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=59066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=59066"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=59066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}