/* 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":127765,"date":"2026-05-25T13:29:32","date_gmt":"2026-05-25T13:29:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=127765"},"modified":"2026-05-25T13:29:32","modified_gmt":"2026-05-25T13:29:32","slug":"as-a-result-you-should-definitely-below-are-a-few-hacksaw-for-those-who-like-aside-of-the-container-position-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/as-a-result-you-should-definitely-below-are-a-few-hacksaw-for-those-who-like-aside-of-the-container-position-game\/","title":{"rendered":"As a result you should definitely below are a few Hacksaw for those who like aside-of-the-container position game"},"content":{"rendered":"

Hackaw Betting even offers a good balance of medium and you will large volatility ports, regardless if you’re going to be hard-forced to get low volatility ports that have an RTP on the 98% range. To restrict your selection of 100 % free slots, let me reveal a look at the most popular app company.<\/p>\n

Paytables detail profitable choice, added bonus game due to wilds, scatters, and special icons<\/h2>\n

Particular regular games enjoys you’ll find are the Keep&Respin function, the brand new Jackpot Wheel ability, and Spread out Function. Fantasma cannot launch as numerous video gaming as the loves of Hacksaw Gaming and you will Nolimit Town particularly. NetEnt harbors features has just made it so you can sweeps gambling enterprises immediately after indicating very preferred as the real cash ports.<\/p>\n

Litecoin, Ethereum, Tether, Bitcoin, Bitcoin Bucks, Charge, Charge card, and a lot more are used for direct dumps and you will withdrawals, providing access immediately and complete shelter with security. Members at the gambling establishment online and cellular discovered around the clock service on the customer service team by delivering an email to otherwise simply clicking the brand new alive cam option getting instant connection to a real agent.<\/p>\n

Fortunate Duck have similar ports and Fortunate Ladys Appeal Deluxe six, Happy Band, Ignite The night, Theme Park Passes Of Fortune and more. Let me reveal most of the key advice and you will metrics about the totally free enjoy on the internet slot games Fortunate Duck. A knowledgeable choice online game for Lucky Duck on the web position are Motif Park Tickets From Fortune, Spark The night, Lucky Stripes and you will Happy Ladys Charm Deluxe 6.<\/p>\n

Featuring its simple-to-understand game play, alive structure, and you may satisfying have, Fortunate Ducky has the benefit of each other informal and you can experienced players an entertaining slot sense. The fresh new game’s icons are typical styled up to plastic ducks, anywhere between easy colored ducks to people wear caps and you may crowns, to the King Ducky offering the highest perks. Victories is formed by the getting groups of five or more coordinating duck signs, which then lead to the new MergeUp element. Fortunate Ducky regarding BGaming try a vibrant on line slot that provides the latest playful attraction away from rubber duckies for the casino industry. Players go for antique credit and you can debit cards, in addition to American Display, Charge, and you may Bank card, otherwise have fun with among the recognized crypto options that are included with Bitcoin and you will Litecoin.<\/p>\n

It seems like LuckyLand features incorporating a dose off puzzle so you can their incentives that have one to-hr tourneys, and you can we’re all right up because of it. Once you done your own membership processes, you\ufffdre quickly entitled to a bonus of ten free sweeps coins plus 7,000 gold coins. At first sight, it generally does not feel like the website offers loads of action for the the new discount part, but you’ll get to fool around with everyday login bonuses and you will typical promo competitions to possess an extra raise. One of the most important things to possess professionals is to find a great indication-up incentive, that is what LuckyLand offers.<\/p>\n

That it auto technician improvements winning symbols, enabling potentially big earnings with each straight victory<\/h2>\n

The new motif out of Fortunate Ducky focuses on the fresh lively and emotional field of plastic ducks, lay up against a bright and you will smiling background similar to a good doll store. Free Spins are triggered by WinSpirit<\/a> getting four or more LD spread symbols, unlocking around 20 free revolves and you can launching multiplier tissues that can enhance payouts doing 128x during the bonus round. High volatility and you may a strong RTP off % create Lucky Ducky attractive to those individuals looking to significant profit prospective.<\/p>\n

Every free sweepstake casinos here enables you to get actual money honours, but earnings is almost certainly not quick unless you explore crypto at the sweeps casinos including or MyPrize. Subscribe to among the appeared sweepstakes casinos and have ready to enjoy totally free harbors the real deal money honours. You will must reach among the online slots totally free spins series because the bulk of it slot’s win possible lies around, although base online game is decently fulfilling also. Starring \ufffdSmokey the latest Racoon\ufffd, Ce Zeus is actually a weird Greek-mythology motivated free online slot you may enjoy within and different Hacksaw Gambling sweeps gambling enterprises particularly Dara Gambling enterprise, just who has just additional them.<\/p>\n

There can be plenty of possible opportunity to get large about popular Fortunate Duck slot machine and we simply liked the bonus rounds and 100 % free revolves ability, remember there is certainly a massive 1,000,000 gold coins available which have those individuals jackpots. From the Lucky Duck slot game, you are welcomed by a tranquil setting regarding bluish heavens and lush green meadows, with the brand new tinkling regarding breeze chimes and the soothing trickling out of a movement. As we recommended regarding games feature area, in the event that there had been a few multipliers from the feet online game, chances are they create bump up those people constant short bins, possibly it is therefore a great deal more appealing.<\/p>\n

All of us screening, tinkers, and you will truly enjoys all of the label because the we feel you to definitely play is how we understand. It all began inside the 2014, once we set out to generate high games 100 % free and you can open to any or all. Close to international moves, i element headings you will not find any place else on the internet. All term is cautiously chose to make sure it’s enjoyable, imaginative, and you will seems great playing to your mobile, pill, otherwise desktop. Inside race, she product sales high injury to their own foes by applying Glacio Chafe.<\/p>\n

Consider my finest suggestions for a knowledgeable on line slots for real currency you could explore no deposit necessary \ufffd just sign-doing the fresh sweepstakes casino, allege their 100 % free GCs and you will SCs, and commence rotating! These titles are also bought at some of the finest sweepstakes casinos, and therefore you could potentially eventually get their Sc for real money honours while playing the very best casino games to possess totally free. Such free online harbors are one particular starred at finest sweepstakes casinos on the market.<\/p>\n

The brand new Boundary from Paperclip Betting are a free online slot one mixes better-recognized artwork and you will modern incentive adding. You can go into the totally free spins round because of twenty three or even more scatters, where in fact the game brings up high multipliers and extra Wilds. The brand new earnings listed below are more uniform, plus the slot’s 5?twenty three style enjoys broadening wilds. Needless to say, the fresh earnings would be the fundamental destination, and even with a modest 5,000x max victory, Fantasy Little princess delivers fantastic action as it’s most remarkable reduced in volatility versus modern releases. Fantasy Little princess from Titan Playing try an innovative new release that’s putting on huge grip at the sweepstakes casinos like .<\/p>\n

Its Happy Duck slot is stuffed with the new cutest group of ducklings anybody previously clapped sight to the that’s a western-themed slot which are reached day and night for the any internet-linked unit. So it get shows how the position did around the our very own standard assessment, and therefore i apply similarly to each and every online slots on the site. Click the link to start, and check out our listing of affirmed casinos lower than when you find yourself happy to play for genuine bet. Constructed on an effective 3×3 layout which have 5 betways, it offers easy yet , engaging game play where scatters can randomly lead to a totally free game with 8 spins. Of several finest ports web sites promote mobile programs through which you can enjoy a favourite ports games on the palm of your hand.<\/p>\n","protected":false},"excerpt":{"rendered":"

Hackaw Betting even offers a good balance of medium and you will large volatility ports, regardless if you’re going to be hard-forced to get low volatility ports that have an RTP on the 98% range. To restrict your selection of 100 % free slots, let me reveal a look at\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-127765","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127765","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=127765"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127765\/revisions"}],"predecessor-version":[{"id":127771,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/127765\/revisions\/127771"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=127765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=127765"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=127765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}