/* 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":115644,"date":"2026-05-25T12:29:19","date_gmt":"2026-05-25T12:29:19","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=115644"},"modified":"2026-05-25T12:29:19","modified_gmt":"2026-05-25T12:29:19","slug":"because-of-this-you-should-definitely-here-are-some-hacksaw-for-many-who-for-example-aside-of-the-container-slot-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/because-of-this-you-should-definitely-here-are-some-hacksaw-for-many-who-for-example-aside-of-the-container-slot-game\/","title":{"rendered":"Because of this you should definitely here are some Hacksaw for many who for example aside-of-the-container slot game"},"content":{"rendered":"

Hackaw Gaming offers a good equilibrium regarding medium and you may high volatility slots, although you’ll be hard-pushed discover low volatility ports which have an enthusiastic RTP on 98% variety. So you can restrict your choice of 100 % free slots, is a glance at the most popular application providers.<\/p>\n

Paytables outline winning alternatives, added bonus games triggered by wilds, scatters, and you can special icons<\/h2>\n

Particular regular video game features discover could be the Hold&Respin element, the fresh new Jackpot Controls function, while the Scatter Function. Fantasma will not release as much video games because the enjoys from Hacksaw Betting and you may Nolimit Area for example. NetEnt ports have has just managed to get in order to sweeps casinos after appearing incredibly well-known as the real cash slots.<\/p>\n

Litecoin, Ethereum, Tether, Bitcoin, Bitcoin Bucks, Charge, Mastercard, and more are sky vegas<\/a> used for lead dumps and you can withdrawals, getting access immediately and you will full safety having encoding. Professionals at local casino on the internet and cellular located twenty-four hours a day help on the customer service team by delivering a contact to help you otherwise simply clicking the newest live chat switch getting instant connection to a genuine representative.<\/p>\n

Fortunate Duck enjoys comparable slots plus Lucky Ladys Charm Luxury six, Happy Streak, Spark The night time, Motif Park Passes Away from Luck and much more. Here’s most of the secret pointers and you may metrics concerning the free gamble on the internet position online game Lucky Duck. The best alternative video game to possess Lucky Duck online position is Motif Park Seats Off Fortune, Ignite The night time, Happy Band and you can Fortunate Ladys Charm Deluxe 6.<\/p>\n

Using its simple-to-know game play, live construction, and rewarding possess, Fortunate Ducky now offers one another informal and you may knowledgeable players an enjoyable position experience. The new game’s symbols all are styled to rubber ducks, between effortless coloured ducks to the people putting on caps and crowns, for the Queen Ducky offering the highest benefits. Wins try formed by the landing groups regarding five or higher coordinating duck signs, which in turn cause the new MergeUp feature. Lucky Ducky off BGaming was a vibrant online slot one will bring the fresh lively attraction away from rubberized duckies into the gambling establishment globe. Participants can opt for antique credit and debit notes, as well as American Show, Charge, and you may Charge card, or use one of several approved crypto possibilities that are included with Bitcoin and Litecoin.<\/p>\n

It appears as though LuckyLand features incorporating an amount regarding secret to help you its bonuses with you to-hours tourneys, and you will we are all up for it. Once you over the subscription process, you are quickly qualified to receive an advantage off ten 100 % free sweeps coins along with seven,000 gold coins. Initially, it does not seem like this site even offers a lot of actions for the the newest discount point, but you’ll get to use daily login incentives and you may typical discount competitions having an additional improve. One of the most issues to have players is to get a significant signal-right up incentive, that is what LuckyLand offers.<\/p>\n

So it auto technician improvements successful signs, enabling probably large payouts with each successive earn<\/h2>\n

The newest motif regarding Happy Ducky focuses primarily on the newest playful and emotional realm of rubber ducks, set up against a bright and you may cheerful backdrop reminiscent of a good doll shop. Free Spins are caused by obtaining four or more LD spread out symbols, unlocking to 20 free spins and you may starting multiplier muscle one can enhance winnings doing 128x for the bonus round. High volatility and you can a robust RTP regarding % make Happy Ducky popular with men and women trying significant earn possible.<\/p>\n

The totally free sweepstake casinos listed here will let you get genuine money awards, but winnings is almost certainly not immediate if you don’t play with crypto in the sweeps gambling enterprises such as or MyPrize. Donate to among the many seemed sweepstakes gambling enterprises and possess ready to gamble totally free ports for real currency honors. You will should started to among the online slots free revolves rounds as the almost all it slot’s earn possible lays there, however the ft games try decently rewarding as well. Featuring \ufffdSmokey the fresh new Racoon\ufffd, Ce Zeus is a wacky Greek-myths driven online slot you may enjoy during the and different Hacksaw Playing sweeps casinos such Dara Local casino, exactly who has just extra them.<\/p>\n

There’s lots of opportunity to rating large about this prominent Lucky Duck slot machine and now we simply cherished the benefit rounds and totally free spins feature, remember you will find a massive 1,000,000 coins up for grabs with those people jackpots. Regarding Lucky Duck position video game, you\ufffdre welcomed by a peaceful form off bluish skies and you may lavish eco-friendly meadows, with the newest tinkling regarding breeze chimes and the soothing trickling regarding a circulation. Even as we ideal regarding video game function part, if the there have been one or two multipliers regarding base video game, they perform enhance men and women repeated small containers, maybe so it is even more appealing.<\/p>\n

We examination, tinkers, and you may genuinely have every name since the we think one enjoy is actually exactly how we discover. It all first started for the 2014, once we attempted to create higher game totally free and you will open to. Next to international strikes, i element titles you might not get a hold of elsewhere on the web. Most of the name try carefully chosen to make sure it is enjoyable, innovative, and seems high playing into the mobile, pill, otherwise pc. Within the race, she product sales significant harm to their unique opponents through the use of Glacio Chafe.<\/p>\n

Take a look at my personal best suggestions for the best on line ports the real deal money you might use no deposit necessary \ufffd merely signal-to the fresh sweepstakes gambling establishment, claim their 100 % free GCs and you will SCs, and start spinning! This type of headings are available at some of the finest sweepstakes casinos, meaning that you could potentially sooner or later get the Sc the real deal money prizes playing the very best online casino games for free. These types of free online ports are presently more starred at finest sweepstakes gambling enterprises in the industry.<\/p>\n

The new Frontier of Paperclip Playing is actually a free online slot one draws together well-identified artwork and modern added bonus adding. You might go into the 100 % free revolves round as a consequence of twenty three or higher scatters, in which the video game brings up highest multipliers and extra Wilds. The latest payouts listed here are a great deal more uniform, plus the slot’s 5?3 style possess increasing wilds. Obviously, the fresh new profits will be the chief interest, and you will despite a modest 5,000x max profit, Fantasy Little princess brings fantastic activity since it is most notable reduced in volatility versus modern releases. Fantasy Little princess regarding Titan Gaming is a discharge that is putting on huge grip during the sweepstakes casinos such .<\/p>\n

Its Happy Duck slot is filled with the latest most adorable selection of ducklings anybody actually ever clapped sight to the and is a far-eastern-inspired slot which may be reached night and day into the any internet-connected tool. That it get reflects how the slot performed all over all of our standardized analysis, and this we use similarly to each online slots games on the internet site. Click on this link to start, and check out our list of confirmed casinos less than when you’re willing to wager genuine bet. Constructed on good 3×3 build with 5 betways, it offers easy yet engaging game play where scatters normally at random cause a no cost online game which have 8 revolves. Of a lot greatest harbors web sites give cellular apps through which you can take pleasure in a favourite slots video game regarding the palm of give.<\/p>\n","protected":false},"excerpt":{"rendered":"

Hackaw Gaming offers a good equilibrium regarding medium and you may high volatility slots, although you’ll be hard-pushed discover low volatility ports which have an enthusiastic RTP on 98% variety. So you can restrict your choice of 100 % free slots, is a glance at the most popular application providers.\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-115644","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115644","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=115644"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115644\/revisions"}],"predecessor-version":[{"id":115645,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115644\/revisions\/115645"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=115644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=115644"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=115644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}