/* 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":125487,"date":"2026-05-25T13:27:22","date_gmt":"2026-05-25T13:27:22","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=125487"},"modified":"2026-05-25T13:27:22","modified_gmt":"2026-05-25T13:27:22","slug":"thus-you-should-definitely-here-are-some-hacksaw-if-you-like-away-of-the-field-slot-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/thus-you-should-definitely-here-are-some-hacksaw-if-you-like-away-of-the-field-slot-game\/","title":{"rendered":"Thus you should definitely here are some Hacksaw if you like away-of-the-field slot game"},"content":{"rendered":"

Hackaw Gaming offers a good harmony away from typical and you can high volatility harbors, whether or not you’ll be tough-pressed to acquire low volatility ports with an RTP on the 98% assortment. To narrow down your selection of totally free ports, here’s a go through the hottest app business.<\/p>\n

Paytables detail winning alternatives, incentive video game caused by wilds, scatters, and you may special symbols<\/h2>\n

Certain normal video game enjoys you’ll find is the Hold&Respin ability, the fresh Jackpot Controls feature, and the Scatter Ability. Fantasma doesn’t launch as many games since the enjoys from Hacksaw Betting and you can Nolimit City including. NetEnt ports features has just managed to make it to sweeps gambling enterprises once proving very prominent because real cash slots.<\/p>\n

Litecoin, Ethereum, Tether, Bitcoin, Bitcoin Bucks, Visa, Bank card, and much more are used for lead deposits and you will distributions, providing instant access and you may complete safeguards having encoding. Players from the casino online and mobile receive around the clock help on customer service team of the delivering a message so you’re able to otherwise simply clicking the brand new alive chat option for quick connection to a bona fide agent.<\/p>\n

Lucky Duck provides similar ports and Fortunate Ladys Appeal Deluxe 6, Fortunate Band, Ignite The night, Theme Playground Seats Out of Fortune and more. Here is Ultra Casino<\/a> all secret pointers and you can metrics in regards to the totally free play on line slot online game Lucky Duck. The best option game getting Lucky Duck on the web slot are Motif Playground Passes Away from Fortune, Spark The night, Happy Stripes and you will Lucky Ladys Appeal Luxury six.<\/p>\n

Along with its simple-to-see gameplay, live design, and satisfying features, Lucky Ducky also offers each other casual and you will knowledgeable participants an enjoyable slot sense. The fresh game’s icons are inspired doing rubberized ducks, between easy coloured ducks to those sporting caps and you will crowns, into the Queen Ducky offering the large advantages. Gains are formed of the landing clusters away from five or even more coordinating duck signs, which in turn cause the fresh new MergeUp feature. Lucky Ducky regarding BGaming try an exciting on line slot you to provides the fresh playful appeal regarding rubber duckies into the gambling establishment industry. Professionals can opt for antique borrowing from the bank and you will debit cards, together with Western Express, Charge, and you will Credit card, or have fun with one of several acknowledged crypto solutions that come with Bitcoin and you can Litecoin.<\/p>\n

It looks like LuckyLand enjoys including an amount off puzzle in order to its incentives that have one to-hr tourneys, and you may all of us are upwards for this. Whenever you over their registration process, you\ufffdre immediately qualified to receive a plus of ten 100 % free sweeps gold coins plus 7,000 gold coins. At first, it will not look like this site now offers loads of actions within the the fresh promo section, but you will reach have fun with every single day log on incentives and you may normal promo competitions to possess a supplementary raise. One of the most issues to own players is to find a great indication-upwards added bonus, that is exactly what LuckyLand also offers.<\/p>\n

It auto technician upgrades winning signs, enabling potentially larger payouts with each straight win<\/h2>\n

The latest motif from Fortunate Ducky centers on the newest playful and you will emotional field of rubberized ducks, place up against a bright and you may cheerful backdrop similar to a toy shop. 100 % free Revolves was as a result of landing five or more LD spread symbols, unlocking doing 20 free revolves and you may introducing multiplier tissues one can boost earnings up to 128x for the bonus bullet. Higher volatility and you can a strong RTP off % create Lucky Ducky appealing to people seeking to tall victory potential.<\/p>\n

All of the free sweepstake casinos listed here allow you to redeem real currency prizes, but winnings may not be immediate if you do not use crypto within sweeps gambling enterprises particularly or MyPrize. Subscribe to among the many seemed sweepstakes casinos and get ready to gamble free ports the real deal currency prizes. You’ll have to reach among online slots games totally free spins cycles since almost all this slot’s earn possible lies indeed there, but the base game are decently rewarding also. Starring \ufffdSmokey the brand new Racoon\ufffd, Ce Zeus was a weird Greek-myths driven free online slot you can enjoy from the as well as other Hacksaw Gaming sweeps gambling enterprises particularly Dara Gambling establishment, just who has just additional all of them.<\/p>\n

There can be a lot of chance to get large on this subject preferred Happy Duck slot machine and then we only treasured the bonus cycles and you will 100 % free revolves feature, make sure you remember discover a massive one,000,000 coins available with the individuals jackpots. On the Fortunate Duck slot games, you are welcomed because of the a peaceful setting regarding bluish heavens and you will abundant eco-friendly meadows, with the new tinkling away from breeze chimes as well as the comforting trickling out of a stream. While we ideal regarding the online game element part, if the there are one or two multipliers on the legs games, then they carry out boost people repeated quick pots, perhaps so it’s far more appealing.<\/p>\n

We testing, tinkers, and genuinely enjoys all of the label because the we think you to play is actually how we discover. Every thing began inside the 2014, whenever we set out to build great video game free and discover to. Near to global moves, i function titles you may not get a hold of any place else online. Most of the label try carefully selected to be certain it’s enjoyable, creative, and you will feels high to experience towards mobile, tablet, or desktop computer. For the race, she sales high damage to their foes by applying Glacio Chafe.<\/p>\n

View my personal finest suggestions for an educated online slots for real money you could use no-deposit necessary \ufffd just signal-as much as the fresh new sweepstakes gambling enterprise, allege your own 100 % free GCs and SCs, and start spinning! These types of headings also are discovered at some of the best sweepstakes gambling enterprises, meaning that you can sooner redeem your own South carolina for real money honors while playing the greatest online casino games to have free. These free online harbors are presently more starred from the ideal sweepstakes gambling enterprises in the industry.<\/p>\n

The brand new Boundary regarding Paperclip Gaming try a free online slot one includes well-understood visuals and you can modern added bonus adding. You could go into the 100 % free spins round due to 12 or more scatters, where in actuality the online game raises higher multipliers and additional Wilds. The newest profits here are even more consistent, and slot’s 5?12 design enjoys increasing wilds. Needless to say, the new winnings would be the fundamental attraction, and you may even after a modest 5,000x max win, Dream Princess delivers big activity as it is most remarkable reduced in volatility versus most modern releases. Dream Little princess off Titan Playing are another release which is putting on huge traction during the sweepstakes casinos such .<\/p>\n

Their Fortunate Duck position is full of the new cutest set of ducklings somebody ever clapped sight towards that is an asian-styled position that may be accessed day and night for the any internet-linked tool. Which score reflects how position did all over all of our standardized testing, and therefore i implement similarly to each online slots games on the site. View here to begin with, and check out the list of affirmed casinos less than when you find yourself willing to play for real stakes. Built on a 3×3 concept that have 5 betways, it has got effortless yet interesting gameplay in which scatters can also be randomly trigger a free online game that have 8 revolves. Of numerous finest ports web sites render mobile apps via which you are able to appreciate your favourite ports game from the hand of the give.<\/p>\n","protected":false},"excerpt":{"rendered":"

Hackaw Gaming offers a good harmony away from typical and you can high volatility harbors, whether or not you’ll be tough-pressed to acquire low volatility ports with an RTP on the 98% assortment. To narrow down your selection of totally free ports, here’s a go through the hottest app business.\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-125487","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/125487","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=125487"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/125487\/revisions"}],"predecessor-version":[{"id":125494,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/125487\/revisions\/125494"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=125487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=125487"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=125487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}