/* 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":132275,"date":"2026-05-25T18:58:14","date_gmt":"2026-05-25T18:58:14","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=132275"},"modified":"2026-05-25T18:58:15","modified_gmt":"2026-05-25T18:58:15","slug":"official-casino-that-have-every-day-perks","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/official-casino-that-have-every-day-perks\/","title":{"rendered":"Official Casino that have Every day Perks"},"content":{"rendered":"

Of Winshark<\/a> many players eventually initiate comparing normal slots and you can jackpot ports. The most common and you can largest winnings are from the new Divine Luck slot by the NetEnt. A predetermined jackpot mode the maximum winnings in the a slot machine out of a good accurately outlined size. A good jackpot is an opportunity to win the maximum award in the online slots. We recommend that it high RTP, high volatility, tiger-themed slot. How many “golden” symbols will be lay by the player, with each icon that have a regular version and you can a good “golden” version that have a high worth.<\/p>\n

After you\u2019re also comfortable, you could switch to real money play so you can chase the new progressive jackpots and you can larger winnings. When you are there\u2019s no cheating password to beat our house, the new 96% RTP will give you a fair try at the landing extended play \u2014 especially when paired with bonuses or free spins. Now, don\u2019t expect to cash out that have exactly 96 cents to the dollar after each lesson. The game\u2019s easy however, fun, with that brush 243-ways-to-win settings and make something short and you can easy. For those who\u2019re also thinking about giving 88 Fortunes a go, it\u2019s a pretty solid find.<\/p>\n

The new campaign grows winnings to the successful accumulators. It\u2019s paid off all the Friday which is calculated according to the result of for the last one week. The new cashback system means a partial refund of cash spent at the the new casino. In the first 2 weeks following the first deposit of your membership to the official site of your Play Luck casino, there is a different give \u2013 Boost-replace out of things that have a good coefficient out of x700. Speaking of things at the Play Fortuna casino, turned into bucks and you can used by the player at the his discretion. The new winnings obtained with the help of free spins is credited to the real membership.<\/p>\n

I recommend PlayFortuna Casino for those who\u2019re also looking for a gambling platform giving no deposit free spins so you can new users and you can thousands of casino games, as well as live broker headings. Surprisingly, you could\u2019t use the bonus winnings to meet that it wagering requirements, so you have to make a deposit. After taking up your free spins, all the bonus winnings is locked until the x20 wagering requirements is met. After meeting the new no deposit bonus wagering criteria, next thing on my mind is how to withdraw my winnings.<\/p>\n

The amount charged would be displayed after gambler enters Cashier and you can picks commission option. Withdrawing money from Fortuna Play Casino is simple and you can user friendly. It\u2019s needed to read him or her to avoid one anger later and there is a few things that you may not be expectant of, as well as withdrawal restrictions, fees and you can deposit wagering criteria. Down replace mode more money for the same amount of things and to attract more favorable terms, players have to replace much more things.<\/p>\n

Winnings out of first and you can 3rd spins bundles need x20 wagering, when you are winnings coming from second and you can fourth bundles score credited as the withdrawable bucks. I scored that it casino 78 out of one hundred and you can be it\u2019s worth suggesting so you can players. Luck out of Olympus ‘s the latest name starring the new Queen out of the new Gods \u2013 you will see him sitting up on his golden throne at the front of your game grid. Of course, we can\u2019t stop rather than providing the admirably tailored customer service options.<\/p>\n

Payout restrictions to the winnings trust your status and the picked currency. To make sure prompt winnings (in this 20 minutes so you can 2 hours), ensure that your membership is confirmed via email address or contact number. As the a fan of mobile gambling experience, I wanted to see how Play Fortuna moves on my mobile.<\/p>\n

Visit PlayFortuna Casino \u2192 Payments, prefer a supported option, lay your count, and you can prove\u2014the new casino harmony at the PlayFortuna Casino always status almost instantly. PlayFortuna Casino makes the casino app easy to log in to ios and you can Android\u2014take it on the official site or follow the needed store connect shown on your region. Mobile Site VersionPlayFortuna Casino has a quick casino internet app to have people who prefer no downloads; unlock the site in any progressive HTML5 browser. PlayFortuna Casino recommends staying at least a few hundred MB free to have easy status and you can caching. PlayFortuna Casino next asks for an easy email address verification and later KYC so you can unlock withdrawals. PlayFortuna Casino recommends enabling unfamiliar supply just for the new set up, next flipping it back down.<\/p>\n

At the Platfortuna casino, profiles is also filter out the list of slot game to add megaways headings and browse from the options. Just like any other game, lottery game also have multiple jackpot options that can take the you can successful number even higher. As one of the best crypto lottery sites, that it platform will bring exciting lottery options that have massive jackpots. The new table game are a huge accessibility to card games as the well as the most other popular options such as sic bo. Jackpots, as well as progressive jackpots, meg means, etc., give a top risk-to-prize ratio, and with a huge variety of options, the new profiles has a lot to choose from. Slots or ports make for most gambling options at the casino, and the profiles can choose to play ports out of a long and you can pretty good list of listed game which might be hosted by the top game company.<\/p>\n

It\u2019s a trusted name around the each other property-based and online casino floor. Jackpots is at random caused when a good Fu Bat Crazy icon lands, however, only if you\u2019re also gambling that have at least one Gold Icon activated. You could play 88 Fortunes for real currency at the most registered online casinos.<\/p>\n

When checked out together, the new welcome road could offer up to $step 1,one hundred thousand in the bucks bonuses and as of many as the two hundred free spins. At the casino, certified and you can responsive support experts is in store. All you need is to open a browser on your mobile, visit the casino, log in to your account, find a game and start gambling.<\/p>\n

Luck Game, the new largest online slot casino, also offers a wealth of gambling options out of best-rated app company and you can our own proprietary headings. The new developer out of registered gambling app, Pragmatic Play, could have been working as the 2015 and you can specializes in launching ports and you can live game to have online casinos. PlayFortuna Casino runs smoothly to the progressive phones, stays white to the stores, and you can hides the new sounds\u2014no flag clutter, just a tidy lobby and you can a good cashier you to\u2019s you to tap away. I such as liked investigating iconic ports such as Lucky Streak step 3, Eye out of Ra, Crazy Crazy Pearls, and the newly added Treasures out of Konga, as well as live broker options such as Early Launches Luck Roulette, Mega Sic Bac, and you can Mega Wheel.<\/p>\n

If your jackpot is regional which is given just for players of your official Play Fortuna casino, then the casino pays out the winnings. If it is a progressive jackpot on the developer, then the winnings is paid off personally by the vendor. To play online games for money and you can withdraw winnings, you should sign in to the official site and you can best up what you owe. The official site out of Play Fortuna casino gifts the biggest options out of online slots that have jackpots out of two types \u2014 progressive and you can repaired. The results of all the spins are provided by the a licensed random count generator, so the game can’t be hacked.<\/p>\n

Play Fortuna shines for its outstanding gambling feel, giving 8,000+ top-tier game, quick winnings in this 20 minutes so you can 2 hours, and you can robust player protection devices. With our couple simple steps out of the way, you will be free to talk about its vast game library, allege generous bonuses, and enjoy a paid online gambling feel that’s tailored to the requires. Our lightning-prompt winnings will get you cashing out in list date, and you can our smooth structure will keep you addicted out of dawn right up until dusk. Roulette, some other vintage, captivates with its easy but really thrilling gameplay mechanics. Prefer a payment approach that suits you on the options available, such as playing cards or e-wallets. Players can enjoy popular Play Fortuna Casino slot options, that are known for its entertaining templates and you can fulfilling gameplay.<\/p>\n","protected":false},"excerpt":{"rendered":"

Of Winshark many players eventually initiate comparing normal slots and you can jackpot ports. The most common and you can largest winnings are from the new Divine Luck slot by the NetEnt. A predetermined jackpot mode the maximum winnings in the a slot machine out of a good accurately outlined\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-132275","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132275","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=132275"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132275\/revisions"}],"predecessor-version":[{"id":132276,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132275\/revisions\/132276"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=132275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=132275"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=132275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}