/* 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":114594,"date":"2026-05-25T11:58:35","date_gmt":"2026-05-25T11:58:35","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=114594"},"modified":"2026-05-25T11:59:04","modified_gmt":"2026-05-25T11:59:04","slug":"only-visit-favor-the-online-game-and-enjoy-the-full-internet-casino-feel-at-hand","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/only-visit-favor-the-online-game-and-enjoy-the-full-internet-casino-feel-at-hand\/","title":{"rendered":"Only visit, favor the online game, and enjoy the full internet casino feel at hand"},"content":{"rendered":"

I would personally consider Trustpilot for impactful LuckyLand Ports recommendations concerning bonuses<\/h2>\n

There is background music and you may sound-effects, which could feel a tiny unpleasant throughout the years, but no care too toggle these types of towards\/away from from the configurations menu. The fresh new Lucky Duck video slot is determined for the a background from blue heavens, lavish eco-friendly meadows with a wonderful duck sculpture regarding distance. Formula have more than two decades in the business and you may more than ninety headings they own composed. I would not attention scrolling from profile, since the it\ufffds as an alternative short, however the search within the library was sorely slow to the pc and you will clunky to your cellular. It isn’t simply a situation regarding messy, crammed artwork; there is certainly so much that it decelerates the site. Include specific large buttons that are easy to browse, along with a basic functional webpages.<\/p>\n

These business are also known for carrying out players’ favourite games, offering a diverse options to match every liking. The latest rapid development of on line betting have motivated extreme improvements in the app creativity, trying to manage a seamless feel for all pages.<\/p>\n

By way of example, there is no real time talk to possess common inquiries<\/h2>\n

Plunge to the sunlight that have Lucky Duck, a pleasing Milky Method on line position video game built to offer vibrant june vibes to each spin. You could select from over one,300 ideal-ranked slots, together with jackpot headings Slots Safari onlinekasino<\/a> which have enormous incentives. Take your own complimentary gold coins, drench on your own within our extensive band of slots and you can casino games, and enjoy the adventure! Within Yay Gambling enterprise, we generated seeing public gambling games extremely easy- because the betting might be enjoyable, not challenging! Mortal Bromance try an online slots games online game developed by Debateable Lady which have a theoretic return to member (RTP) out of %.<\/p>\n

On the internet participants can access the latest casino via the web browser regarding the system, choosing quick gamble, otherwise by downloading the brand new gambling establishment. It seems the fresh Ducks are the thing that will bring the new chance and the enjoyable at DuckyLuck on the internet and mobile casino, a gambling establishment serious about the enjoyment and you can passions out of users. Subscribe tens of thousands of professionals just who play MilkyWay online, play MilkyWay casino games, appreciate a safe and you may fascinating MilkyWay on the internet gaming environment. Speak about the best inside online enjoyment with MilkyWay online game on the web, like the better MilkyWay online game, top-ranked slots on the internet, and you will interesting Milky Means video game on the web enjoy choices. With these MilkyWay online gambling software and easy Milky Method on the internet online game download, you can enjoy your preferred video game anytime, anyplace.<\/p>\n

In any online game lobby, you will observe a paragraph titled \ufffdThe fresh new Harbors,\ufffd and it will getting full of the fresh new launches. All of these standards apply to the new online position video game, specifically those which have features that make the newest games even more entertaining for on line position users. It’s important to have people to set personal restrictions, perform the bankrolls smartly, and take normal holiday breaks to ensure to experience slots remains an excellent enjoyable and you will safe pastime. This feature form you can attempt the latest demo slot in your mobile device during the fresh wade.<\/p>\n

We create just remember that , the newest earnings was maybe counter well-balanced by the main benefit possess, however, as well as regular for the slots, threes tend to house on the reels a lot more commonly than four from a kind. It would was basically great observe specific multipliers on the ft games and not wait until you result in the latest Quack Sample Added bonus bullet where you can winnings certain. The fresh new Fortunate Duck casino slot games have unique signs in the means out of wilds and you may stacked wilds, in addition to a few scatters. Graphics is vibrant, the menus are easily accessible and there is apparently zero issues with lagging or so on.<\/p>\n

Whenever the thing is Buddy Lorsque, he’s going to phone call more ducks and give you a lot more possibilities to earn winnings. Maybe fans of one’s let you know tend to appreciate these sentences more than individuals, but we think it’s a great universal factor the mediocre user will enjoy. For many who visit the Duck Dynasty part of A great&E’s webpages, you can easily even see that Zynga forces this game quite difficult. Social betting developer Zynga has good Duck Dynasty position that can be found to possess Pcs, Macs and Android os \/ apple’s ios mobiles.<\/p>\n

It is very important remember that you simply will not manage to redeem real money awards if you don’t possess a proven account. Only look at the comparisons to have specific promo codes to ensure you may be having the cheapest price. Therefore You will find waiting another desk you to definitely reveals what prizes you is also receive from the current four better sweeps casinos. All of the decent sweeps casinos will let you redeem many different real-world prizes, and it is worthy of viewing what’s available at these sites. Just remember that , of many sweeps gambling enterprises supply 100 % free gadgets to control the purchasing and you will to relax and play big date, like pick limitations, lesson limitations, as well as account self-exception.<\/p>\n

Although not, professionals can invariably use demonstrated slot ways to maximize their pleasure and possibly increase its fun time. Enjoy the Happy Ducky trial to help you learn the fresh position and maximize your excitement if you decide to try out for real. The brand new demonstration type is actually just like the real video game, for instance the MergeUp function, totally free revolves, and you may multipliers, making certain a real-to-existence examine regarding what to expect.<\/p>\n

The latest Totally free Revolves element try brought on by landing four or even more Scatter icons, awarding anywhere between 15 and you can 20 100 % free revolves. In lieu of conventional paylines, Fortunate Ducky employs a cluster Pays auto technician, in which gains is actually designed of the landing five or even more complimentary icons for the surrounding positions. Lucky Ducky of BGaming is an exciting on line position passionate by the the newest enduring charm of plastic ducky event.<\/p>\n

During the LuckyLand Slots, you can always look at exactly how many of your own South carolina is actually redeemable (as well as how many are yet as starred).<\/p>\n

Available to the cellular and you may Desktop gizmos, such video game function typical symbols, one payline, and you will play possibilities. 3-reel slots, classic online ports with no down load, have to promote a simple play games means. As well as, the latest Happy Ducky online casino are going to be appreciated on your cellular mobile phone each time, people day. Once we manage the problem, here are a few these types of comparable online game you could potentially take pleasure in. The fresh new Happy Duck ports bonus bullet, Quack Try Incentive, are due to getting around three of the \ufffd5 ducks with targets’ scatters anyplace into the reels. Inside the 100 % free spins, you are able to cause re-spins from the getting a lot of scatters.<\/p>\n","protected":false},"excerpt":{"rendered":"

I would personally consider Trustpilot for impactful LuckyLand Ports recommendations concerning bonuses There is background music and you may sound-effects, which could feel a tiny unpleasant throughout the years, but no care too toggle these types of towards\/away from from the configurations menu. The fresh new Lucky Duck video slot\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-114594","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/114594","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=114594"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/114594\/revisions"}],"predecessor-version":[{"id":114630,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/114594\/revisions\/114630"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=114594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=114594"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=114594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}