/* 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":117367,"date":"2026-05-25T12:56:56","date_gmt":"2026-05-25T12:56:56","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=117367"},"modified":"2026-05-25T12:56:56","modified_gmt":"2026-05-25T12:56:56","slug":"as-a-result-if-not-listed-below-are-some-hacksaw-for-people-who-including-aside-of-the-box-position-games","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/as-a-result-if-not-listed-below-are-some-hacksaw-for-people-who-including-aside-of-the-box-position-games\/","title":{"rendered":"As a result if not listed below are some Hacksaw for people who including aside-of-the-box position games"},"content":{"rendered":"

Hackaw Betting now offers good balance from medium and you may large volatility slots, regardless if you’re going to be hard-pushed to find low volatility slots which have an enthusiastic RTP in the 98% variety. So you can narrow down your choice of 100 % free ports, here is a look at the best app business.<\/p>\n

Paytables detail effective choice, added bonus games as a result of wilds, scatters, and you can special symbols<\/h2>\n

Certain typical games have you can find are the Hold&Respin ability, the fresh new Jackpot Controls feature, and also the Scatter Ability. Fantasma doesn’t launch as much games as the loves out of Hacksaw Gambling and Nolimit Area such as. NetEnt harbors has has just caused it to be so you can sweeps gambling enterprises immediately after proving incredibly popular since the real money slots.<\/p>\n

Litecoin, Ethereum, Tether, Bitcoin, Bitcoin Wacko<\/a> Dollars, Visa, Bank card, and more can be used for lead deposits and you can distributions, taking immediate access and you may complete security that have security. Professionals at the local casino online and mobile located twenty-four hours a day assistance from the customer support team of the giving an email to help you otherwise simply clicking the fresh real time cam key having quick connection to a bona-fide representative.<\/p>\n

Happy Duck provides similar slots plus Fortunate Ladys Charm Luxury 6, Happy Streak, Ignite The evening, Theme Playground Entry From Chance and much more. Here is all the key pointers and metrics concerning free enjoy on the web slot game Lucky Duck. A knowledgeable option games to own Fortunate Duck on line slot try Theme Playground Entry Out of Chance, Ignite The night, Happy Band and you can Happy Ladys Charm Luxury six.<\/p>\n

Featuring its simple-to-see gameplay, live design, and satisfying possess, Fortunate Ducky has the benefit of one another casual and you may knowledgeable participants an entertaining slot feel. The newest game’s symbols are typical themed doing rubber ducks, ranging from simple coloured ducks to people wear hats and you may crowns, towards Queen Ducky offering the higher advantages. Victories is actually molded by obtaining groups from five or more complimentary duck icons, which in turn result in the new MergeUp ability. Fortunate Ducky regarding BGaming try a vibrant on the web position you to brings the brand new playful appeal off rubber duckies to the gambling enterprise business. People go for antique credit and debit notes, together with American Express, Charge, and Credit card, or use one of many recognized crypto options that are included with Bitcoin and you will Litecoin.<\/p>\n

It seems like LuckyLand have incorporating an amount regarding secret to help you its bonuses with that-hour tourneys, and you can we are all right up for it. When you done the subscription techniques, you\ufffdre instantly entitled to an advantage out of 10 totally free sweeps gold coins plus eight,000 coins. At first sight, it generally does not look like the website also provides a good amount of actions within the the brand new discount part, however you will will explore every single day login bonuses and you may regular promo tournaments to own a supplementary raise. One of the most considerations for members is to find a decent indication-up extra, which is just what LuckyLand offers.<\/p>\n

This auto technician enhancements successful icons, permitting probably larger earnings with each straight profit<\/h2>\n

The newest theme from Happy Ducky concentrates on the fresh playful and you may sentimental arena of plastic ducks, set facing a shiny and you may smiling backdrop reminiscent of a good doll shop. Totally free Revolves are triggered by obtaining four or more LD spread out signs, unlocking as much as 20 totally free revolves and you will unveiling multiplier tissue that can raise payouts as much as 128x during the incentive bullet. Higher volatility and you may a robust RTP of % create Fortunate Ducky popular with people seeking to extreme profit potential.<\/p>\n

Most of the 100 % free sweepstake gambling enterprises the subsequent allows you to get real money awards, however, profits may not be instant unless you explore crypto in the sweeps casinos for example otherwise MyPrize. Subscribe to one of several seemed sweepstakes casinos as well as have willing to enjoy totally free slots for real currency awards. You’ll need certainly to reach one of many online slots totally free spins rounds while the majority of it slot’s win potential lies truth be told there, nevertheless the ft games try decently rewarding as well. Starring \ufffdSmokey the latest Racoon\ufffd, Ce Zeus try a wacky Greek-myths driven free online slot you may enjoy within and differing Hacksaw Gambling sweeps casinos such Dara Local casino, whom has just extra all of them.<\/p>\n

There is certainly a lot of possibility to score big on this subject preferred Fortunate Duck slot machine game and now we merely enjoyed the benefit cycles and you will free spins feature, do not forget discover an astonishing one,000,000 gold coins available with those people jackpots. In the Lucky Duck slot online game, you\ufffdre asked by a tranquil setting of blue heavens and you will luxurious eco-friendly meadows, accompanied by the fresh tinkling regarding snap chimes as well as the comforting trickling regarding a circulation. As we suggested on the video game feature area, when the there were several multipliers regarding the feet video game, they would enhance those people repeated small pots, perhaps making it even more appealing.<\/p>\n

All of us evaluating, tinkers, and truly features all of the name because the we feel you to definitely gamble is actually how we know. It-all began inside 2014, when we attempted to make high online game free and you will open to all or any. Near to globally hits, i feature titles you won’t pick elsewhere on line. All the term is meticulously chose to ensure it is fun, innovative, and you may seems great to relax and play for the cellular, pill, or desktop computer. Inside competition, she business significant injury to their unique opposition by applying Glacio Chafe.<\/p>\n

Take a look at my best recommendations for an informed on the web harbors for real money you could play with no deposit expected \ufffd only indication-doing the fresh new sweepstakes local casino, claim your 100 % free GCs and you will SCs, and begin rotating! These types of titles also are discovered at some of the best sweepstakes gambling enterprises, and thus you could sooner receive the South carolina for real currency prizes playing the very best online casino games having 100 % free. These types of online ports are presently more starred at top sweepstakes casinos in the industry.<\/p>\n

The newest Frontier off Paperclip Betting was a free online slot one brings together really-recognized illustrations or photos and modern bonus layering. You could potentially go into the free spins round thanks to 12 or maybe more scatters, where in fact the game introduces higher multipliers and additional Wilds. The brand new payouts listed below are a great deal more uniform, and the slot’s 5?3 build features expanding wilds. Needless to say, the brand new earnings could be the fundamental appeal, and even with a modest 5,000x maximum victory, Fantasy Princess provides great activity since it is most memorable reduced in volatility versus most advanced launches. Dream Princess off Titan Gambling try another release that is wearing substantial traction from the sweepstakes gambling enterprises like .<\/p>\n

Its Fortunate Duck position is stuffed with the new cutest number of ducklings people ever clapped eyes into the that is a far-eastern-inspired position that may be utilized almost all the time for the people internet-linked equipment. This get shows how position performed around the all of our standard testing, hence i use just as every single online slots on the site. View here first off, and check out the variety of confirmed casinos lower than if you are happy to wager genuine bet. Built on an effective 3×3 layout having 5 betways, it’s easy yet , entertaining gameplay in which scatters can also be randomly lead to a no cost online game which have 8 revolves. Many top ports sites offer cellular software thru which you can take pleasure in a popular harbors online game regarding palm of the hands.<\/p>\n","protected":false},"excerpt":{"rendered":"

Hackaw Betting now offers good balance from medium and you may large volatility slots, regardless if you’re going to be hard-pushed to find low volatility slots which have an enthusiastic RTP in the 98% variety. So you can narrow down your choice of 100 % free ports, here is a\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-117367","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117367","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=117367"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117367\/revisions"}],"predecessor-version":[{"id":117368,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117367\/revisions\/117368"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=117367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=117367"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=117367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}