/* 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":105361,"date":"2026-05-25T11:43:58","date_gmt":"2026-05-25T11:43:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=105361"},"modified":"2026-05-25T11:43:58","modified_gmt":"2026-05-25T11:43:58","slug":"this-means-that-you-should-definitely-here-are-some-hacksaw-for-those-who-including-out-of-the-box-position-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/this-means-that-you-should-definitely-here-are-some-hacksaw-for-those-who-including-out-of-the-box-position-game\/","title":{"rendered":"This means that you should definitely here are some Hacksaw for those who including out-of-the-box position game"},"content":{"rendered":"

Hackaw Gaming even offers a balance regarding average and you will higher volatility harbors, even if you’re going to be tough-pushed to locate low volatility harbors having an enthusiastic RTP regarding the 98% diversity. To narrow down your choice of 100 % free ports, the following is a look at the most popular software business.<\/p>\n

Paytables detail winning possibilities, incentive games brought on by wilds, scatters, and you will special signs<\/h2>\n

Specific typical games have you will find will be the Hold&Respin element, the new Jackpot Controls function, and Spread Element. Fantasma cannot launch as many game titles since the loves of Hacksaw Betting and you will Nolimit Town for example. NetEnt harbors possess has just caused it to be to help you sweeps gambling enterprises just after exhibiting very prominent because the real cash harbors.<\/p>\n

Litecoin, Ethereum, Tether, Bitcoin, Bitcoin Cash, Charge, Charge card, plus are used for lead places and you may withdrawals, bringing immediate access and you may complete safeguards with encoding. Professionals at the gambling establishment online and mobile discover 24 hours a day assistance regarding customer support team because of the sending a message in order to otherwise hitting the brand new live talk option to have immediate connection to a genuine broker.<\/p>\n

Happy Duck enjoys equivalent harbors as well as Happy Ladys Attraction Deluxe 6, Lucky Streak, Ignite The night, Motif Playground Passes Off Chance and. We have found the trick suggestions and you will metrics about the totally free gamble online slot online game Fortunate Duck. An educated option online game to possess Happy Duck on the web position are Motif Playground Seats Away from Fortune, Spark The night time, Lucky Streak and you can Lucky Ladys Charm Deluxe six.<\/p>\n

Featuring its simple-to-see gameplay, live design, and you may satisfying features, Fortunate Ducky has the benefit of one another casual and experienced players an enjoyable slot feel. The brand new game’s signs all are inspired around plastic ducks, anywhere between simple coloured ducks to people wearing limits and you can crowns, into the King Ducky offering the highest SlotV SE<\/a> rewards. Victories was shaped by the obtaining clusters off five or higher complimentary duck signs, which then bring about the brand new MergeUp element. Lucky Ducky away from BGaming was a captivating on the internet slot you to definitely will bring the brand new playful attraction away from rubberized duckies towards local casino community. Participants go for classic credit and you may debit notes, and American Display, Visa, and you can Credit card, or explore one of the acknowledged crypto solutions that come with Bitcoin and you may Litecoin.<\/p>\n

It appears as though LuckyLand possess including a dosage out of mystery to help you the incentives with that-hour tourneys, and you may we’re all upwards for it. Whenever you done their subscription procedure, you\ufffdre immediately eligible for an advantage away from ten 100 % free sweeps coins and eight,000 coins. At first sight, it does not appear to be the website also offers loads of activity within the the new discount part, however you will will use everyday log on bonuses and you will typical discount competitions to have an extra boost. One of the most considerations getting members is to obtain a significant signal-upwards extra, that is just what LuckyLand also provides.<\/p>\n

Which auto mechanic upgrades effective icons, enabling potentially huge earnings with each consecutive winnings<\/h2>\n

The latest theme off Lucky Ducky targets the fresh new lively and you can nostalgic realm of plastic ducks, put against a bright and you will smiling background reminiscent of an effective doll store. 100 % free Spins is actually due to landing five or more LD spread out signs, unlocking around 20 free spins and you will establishing multiplier structure that can enhance winnings up to 128x inside added bonus round. Higher volatility and an effective RTP regarding % build Fortunate Ducky popular with men and women trying to tall winnings possible.<\/p>\n

Every 100 % free sweepstake gambling enterprises the subsequent will let you receive actual currency awards, but earnings may not be instantaneous if you don’t fool around with crypto during the sweeps casinos particularly otherwise MyPrize. Subscribe to one of several searched sweepstakes casinos and also have prepared to play totally free harbors for real money honors. You’ll need certainly to started to among the many online slots free revolves cycles since the bulk of so it slot’s winnings possible lies truth be told there, nevertheless the foot games is decently rewarding also. Featuring \ufffdSmokey the newest Racoon\ufffd, Le Zeus try a weird Greek-mythology motivated online slot you may enjoy within as well as other Hacksaw Playing sweeps casinos such as Dara Gambling establishment, just who has just added all of them.<\/p>\n

There can be plenty of opportunity to get larger with this prominent Happy Duck casino slot games and in addition we only loved the advantage cycles and you may totally free revolves feature, remember there can be an impressive 1,000,000 coins available with those jackpots. Regarding the Lucky Duck position game, you\ufffdre asked of the a peaceful form off blue skies and lush environmentally friendly meadows, followed by the latest tinkling out of piece of cake chimes while the soothing trickling of a stream. Once we ideal from the game function point, when the there have been a couple of multipliers from the base game, chances are they perform enhance people regular short bins, possibly it is therefore more appealing.<\/p>\n

We testing, tinkers, and you may genuinely features the identity because we believe that enjoy is actually the way we see. Everything first started within the 2014, when we set out to generate great game free and you may discover to any or all. Alongside global hits, i feature headings you will not get a hold of anywhere else online. Most of the identity is actually meticulously chose to make certain it is fun, creative, and you can feels great to play into the mobile, tablet, otherwise pc. For the race, she revenue high damage to their enemies by making use of Glacio Chafe.<\/p>\n

Look at my personal ideal suggestions for an informed on the internet harbors for real money you could potentially use no deposit necessary \ufffd just indication-doing the newest sweepstakes local casino, claim the free GCs and SCs, and start rotating! This type of headings are discovered at some of the best sweepstakes gambling enterprises, which means that you could fundamentally receive the Sc for real money honors playing the best online casino games to have 100 % free. These types of free online ports are presently probably the most played during the finest sweepstakes casinos on the market.<\/p>\n

The newest Frontier away from Paperclip Gaming is actually an online position that brings together really-recognized design and you will progressive incentive adding. You could potentially go into the 100 % free spins bullet due to twenty-three or even more scatters, where the online game brings up high multipliers and extra Wilds. The latest profits listed below are even more uniform, and also the slot’s 5?12 style has increasing wilds. Of course, the brand new profits could be the chief appeal, and you may even with a moderate 5,000x max victory, Dream Little princess provides great action as it is most notable low in volatility compared to most advanced releases. Fantasy Princess out of Titan Betting try another launch which is gaining substantial traction at the sweepstakes gambling enterprises like .<\/p>\n

Its Fortunate Duck position is filled with the brand new most adorable set of ducklings anybody ever before clapped attention for the that is a western-themed position which may be accessed day-and-night to your one internet-connected device. Which rating shows the slot performed round the all of our standardized testing, and therefore i incorporate just as to every online slots on the internet site. Just click here to begin with, and check out our very own variety of confirmed casinos less than while you are happy to wager actual bet. Constructed on a 3×3 concept that have 5 betways, this has easy but really enjoyable gameplay where scatters can also be randomly lead to a totally free video game that have 8 spins. Of numerous top ports internet render cellular applications via which you yourself can enjoy a popular slots online game on hand of one’s give.<\/p>\n","protected":false},"excerpt":{"rendered":"

Hackaw Gaming even offers a balance regarding average and you will higher volatility harbors, even if you’re going to be tough-pushed to locate low volatility harbors having an enthusiastic RTP regarding the 98% diversity. To narrow down your choice of 100 % free ports, the following is 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":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-105361","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105361","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=105361"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105361\/revisions"}],"predecessor-version":[{"id":105364,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105361\/revisions\/105364"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=105361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=105361"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=105361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}