/* 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":32474,"date":"2026-05-17T18:19:04","date_gmt":"2026-05-17T18:19:04","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=32474"},"modified":"2026-05-17T18:19:06","modified_gmt":"2026-05-17T18:19:06","slug":"play-immediately","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/play-immediately\/","title":{"rendered":"Play Immediately"},"content":{"rendered":"

Once you signup, you\u2019ll get 10,000 Coins and you will $ten worth of Emeralds\u2014one another ideal for moving straight into the action. Simply speaking, Coins let you wager enjoyable, if you’re Emeralds provide the opportunity to victory a real income perks. Ruby Sweeps Gambling enterprise work in the same way because the almost every other preferred personal casinos such as Chumba and you may Pulsz, albeit with a somewhat other label because of its advanced money. For individuals who\u2019re looking a reliable societal gambling enterprise with very good video game and a little extra perks, Ruby Sweeps will probably be worth tinkering with! They are doing shell out payouts like magic, so you wear\u2019t need to bother about you to. If you\u2019re curious about if Ruby Sweeps can also be live up to brand new hype\u2014or if perhaps they\u2019s just a separate identity for the very same old procedure\u2014continue reading!<\/p>\n

Everything you need to do is simply put the bucks during the your own https:\/\/familygames-be.com\/<\/a> SlotsandCasino membership and you will found so it extra immediately! All you need to manage simply deposit the bucks during the your DuckyLuck Gambling establishment account and you will discover this extra immediately! 10x rollover to own sports wagers (possibility 1.4+), 35x for gambling games.<\/p>\n

This new online slots games are full of instances regarding enjoyment, showy signs, and an exact rotating whirlwind. And because you\u2019re playing enjoyment, perhaps not getting actual money, you\u2019re also literally shielded. You’ll be able to fall in love with another type of launch and include they for the favourites, or you get ignore it because you don\u2019t feeling inside. Well-known web slots was proof top quality in almost any section, such as for instance RTP (return-to-player), volatility, and game play. They are cinematic, graphically epic launches in which studios wade the-during the on the graphics.<\/p>\n

Ruby Sweeps Casino would be accessed thru the webpages for the mobiles, pills, notebooks, or desktops. Whichever approach you are going that have, you could usually anticipate your loans to stay your bank account contained in this dos-3 business days. not, into as well as side, there aren’t any fees on sales, and money is actually immediately acknowledged, and so the Coins (and you can free Emeralds) was put into your bank account instantly. Monthly, Ruby Sweeps feedback athlete craft and sends away unique benefits to help you people that\u2019ve gained him or her, so if you\u2019re also energetic, you\u2019re set for some nice perks. For example, if you purchase the fresh new $9.99 bundle, you\u2019ll walk off having 20,000 Coins and you will 20 Totally free Emeralds. If you buy a gold Coin plan to own $9.99 otherwise $19.99, you\u2019ll score a beneficial one hundred% meets.<\/p>\n

Meanwhile, multipliers and unique highest-spending icons can appear to determine payouts during the an optimistic way. Just like the the game are created towards the HTML5 technology, every headings regarding RubyPlay comply with carry out member-amicable connects instead of limiting towards the high quality for mobile betting. Because you\u2019ll see with lots of jackpot ports using this merchant, discover often numerous jackpots readily available, constantly linked to entertaining added bonus aspects such as for example hold-and-winnings series. In terms of other people, spread out icons may lead to totally free revolves or keep-and-win rounds, if you are multipliers can appear to convert winnings in a flash. Because you search through the latest 100+ online game in the RubyPlay\u2019s portfolio, you\u2019ll run across creative provides particularly Jackpot Mania, Firecatcher, and you may Immortal Array solutions. If you\u2019re seeking a new slot machine game, chasing a progressive, otherwise using 100 percent free spins to evaluate provides, be aware of the terminology, take control of your money, and enjoy the choices responsibly.<\/p>\n

The company stumbled on life when you look at the 2017, throughout a period when films ports was basically developing well in popularity. RubyPlay is the creation from a team of entrepreneurs which have a great keen need for the online harbors world. There are RubyPlay online game in lots of online casinos, but it is usually crucial that you find the correct choice for you.<\/p>\n

Just what a big selection of high quality online games you’ll end up exhibited that have during the Ruby Harbors in just so many can be found on very easy to browse casino lobby. Great online slots and you can large local casino incentives are the thing that you can anticipate since an associate away from Ruby Harbors gambling enterprise together with astonishing welcome bargain rewards your that have a massive 250% up to $dos,500 in your first put. Ruby Harbors casino was run on Real time Betting (RTG) so you rating most of the great online slots step that you could actually ever ask for, and you also get to enjoy people slots how you wanted to help you. That account might possibly be useful for economic purchases please make sure your data are 100% right. step 3.The application usually unlock instantly and you will certainly be prompted to help you sign in a free account.<\/p>\n

RubyPlay are an enjoyable game maker to own online slots. Offering they a turn-down isn\u2019t what we suggest because you can also be earn a stack of real cash earnings whenever playing and you can generating a good leaderboard rating. You might be more elated to understand that Ruby Slots and releases newest contest advertising day to day. Discover extremely going to be a great amount of grounds one which just if you register at the Ruby Ports Casino and you can immerse in all new crazy incentive purchases in-line at this internet casino website. Ruby Slots Casino gets their real money users an opportunity to initiate the on the internet playing travels using them and you can earn gems within the new VIP plan made to brilliance. Grab their display of the humongously prominent cashback incentives and gamble once again to get yet another extra package since there are of several ways Ruby Ports try treating its entered consumers.<\/p>\n

You\u2019ll have to offer some basic guidance, like your identity, email, and you can go out regarding delivery to confirm your\u2019lso are more 21. In the end, Ruby Sweeps really does a great deal best\u2014especially when you are looking at video game possibilities, ease-of-use, and you will winnings. Also, its lack of alive dealer games could be a dealbreaker having certain, especially because these are extremely an essential at the many other online casinos. This new $fifty minimum to own prize redemptions are an enjoyable reach\u2014lower than everything you\u2019ll get a hold of within a number of other sweepstakes gambling enterprises. There\u2019s of course too much to including right here, particularly if you\u2019lso are into the well-produced ports, video poker, and you will bingo online game out-of Ruby Gamble. Very, when you’re Tao Fortune can offer reduced earnings and an even more book game solutions, Ruby Sweeps stands out for its athlete-friendly features and you may reliable provider.<\/p>\n

Probably one of the most preferred online casino games, and also for good reason, Blackjack is obviously riveting whilst brings together expertise and method having chance. We\u2019ve got on the internet position online game for everyone, plus they\u2019re also just in store hitting Twist! Each and every on the web casino slot games delivers non-avoid step and amusement, and also the dazzling image, easy sound-effects and you may easy animated graphics enhance its attention. From the Ruby Luck i\u2019ve had a variety of more than 500 ideal-high quality online casino games.<\/p>\n

Free games possess and incentive cycles change really well to cellular play, with vibrant picture one pop on the cellphone displays. Having Alive Playing at the rear of the working platform, participants access legitimate position online game where all spin you can expect to result in genuine buck payouts. We\u2019re also on Desktop, Mac computer, as well as modern mobiles and pills, so you’re able to spin the latest reels regardless of where you\u2019re. That have such available, we understand your\u2019ll come across your ideal mythic adventure. Whichever alternative you select, you\u2019ll get access to an informed totally free ports to play to own fun on the web. Once you enjoy totally free position video game on the web, your claimed\u2019t be eligible for as numerous bonuses because you carry out when the you starred real cash harbors.<\/p>\n","protected":false},"excerpt":{"rendered":"

Once you signup, you\u2019ll get 10,000 Coins and you will $ten worth of Emeralds\u2014one another ideal for moving straight into the action. Simply speaking, Coins let you wager enjoyable, if you’re Emeralds provide the opportunity to victory a real income perks. Ruby Sweeps Gambling enterprise work in the same way\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-32474","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32474","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=32474"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32474\/revisions"}],"predecessor-version":[{"id":32475,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32474\/revisions\/32475"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=32474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=32474"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=32474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}