/* 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":122615,"date":"2026-05-25T13:19:37","date_gmt":"2026-05-25T13:19:37","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=122615"},"modified":"2026-05-25T13:19:37","modified_gmt":"2026-05-25T13:19:37","slug":"try-to-score-five-scatters-in-order-to-trigger-the-brand-new-100-free-spins-element","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/try-to-score-five-scatters-in-order-to-trigger-the-brand-new-100-free-spins-element\/","title":{"rendered":"Try to score five scatters in order to trigger the brand new 100 % free spins element"},"content":{"rendered":"

Towards of a lot honours being offered here, you are going to feel just like a king after you finish the play lesson! Inside the Queen of Harbors, this type of choice to all practical symbols (excluding scatters), boosting your possibilities to mode successful combos. Surprisingly, while in the Totally free Spins, every gains try tripled-thus actually small wins can change into the huge honours!<\/p>\n

Let’s glance at the reasons to explore our very own kind of free slots. Which have an intensive variety of themes, regarding fresh fruit and you may animals so you can mighty Gods, our very own type of gamble-free online slots features some thing for all. Play Starburst for free now towards & realise why it’s certainly one of NetEnt’s most epic slots!<\/p>\n

Instead, Internet Amusement designed they like any progressive harbors<\/h2>\n

Finish the whole indication-up processes and you can put at least ?20, claim the initial group off 50 100 % free revolves. 18+, sign up, deposit ?20 or more individually through the promotion page and you will stake ?20 for the Big Bass Bonanza, and you can found 100 Totally free spins to your Big Bass Bonanza. This step takes you to the main benefit LP where there can be a join & put key which you have to accessibility. We understand why provide by the no betting function, any winnings on the revolves are your own to keep instead cleaning an effective rollover. That is a no wagering provide, meaning that any profits on the spins go to the cash harmony.<\/p>\n

Yet not, a good amount of members WinBeatz \u03b5\u03c0\u03af\u03c3\u03b7\u03bc\u03bf\u03c2 \u03b9\u03c3\u03c4\u03cc\u03c4\u03bf\u03c0\u03bf\u03c2<\/a> however prefer the 5-reel grids, even though they need to settle for less paylines. Pragmatic Enjoy enjoys excluded the newest fortune factor by and demo ports Added bonus Pick and you can 100 % free Revolves that have powerful multipliers. All of that comes in the brand new Nice Bonanza position, giving winnings as high as x21,100 and a cover Anywhere motor. You can earn a great jackpot prizes through the End Engine! Winnings amazing prizes of up to x5,000 via the Free Revolves minigame having an alternative Growing Symbol.<\/p>\n

Prominent labels are auto game, Minecraft, 2-athlete online game, match twenty-three online game, and you can mahjong. There are lots of on the web multiplayer online game which have productive teams for the CrazyGames. Filled with everything from desktop Personal computers, laptop computers, and you may Chromebooks, for the most recent cell phones and you can pills from Apple and you will Android os. You could speak about all of them through the best selection otherwise from the scrolling upon one games or group page. Poki houses good curated distinctive line of a knowledgeable web browser game.<\/p>\n

Specific participants care and attention that if it get a fill out an application offer or another sort of added bonus, it does cause them to become not victory. No matter how video game you decide to gamble, even though discover some kind of special event, it has got zero effect on just how much you could winnings therefore it’s nothing to value. These company framework the newest game play mechanics, if you are other sites just server the new online game plus don’t handle outcomes. With respect to your selection of game inside Southern Africa and the community, slotted servers options are among the most well-known.<\/p>\n

Caused by around three or maybe more spread signs, this particular aspect can also be somewhat improve your payout prospective<\/h2>\n

MrQ Casino’s conservative build and quick-packing cellular adaptation offer an excellent consumer experience. User experience The general contact with navigating the working platform, as well as mobile being compatible and build. If you are looking to possess a minimal-risk, easy-to-clear greeting incentive out of a highly-dependent operator, BetVictor provides on that top. One winnings greater than ?100, plus winnings after that obtained away from thereupon money despite any deposit, might possibly be removed. Only browse the directory of online game or utilize the lookup function to search for the video game we need to enjoy, faucet it, and the online game often load to you, willing to getting starred.<\/p>\n

The newest revolves can handle Fishin Frenzy and Eyes off Horus, nevertheless great is that what you get remains your own personal to save as opposed to wagering conditions. Only participants more 18 years of age are allowed to gamble at online casinos, as stated from the Uk legislation. Vlad George Nita is the Direct Editor during the KingCasinoBonus, taking extensive studies and you will systems off web based casinos & incentives. You will find created a detailed record with advertisements and also have analysed all their terms to make sure you don’t miss people extremely important information. Delight were everything was basically carrying out when this web page emerged plus the Cloudflare Ray ID available at the bottom of this web page.<\/p>\n

Parts are separated to add those jackpot slots as well as over 100 Megaways headings. You’ll find a big band of fundamental videos ports of more than 100 software team, meaning you get a myriad of types and you will game mechanics. Top United kingdom online slots gambling enterprises is blend a giant type of online game that have expert variety. Of several gambling establishment sites now give Totally free Spins bonuses, however, an excellent bonus will likely be both generous and easy to help you allege. Thus British slot internet having a variety of highest RTP online game are thought getting a knowledgeable position internet having successful. Renowned slots available with Megaways tend to be Piggy Wealth Megaways, Gods from Olympus II Megaways, and you may Blood Suckers Megaways.<\/p>\n

Every video game the following earns their lay predicated on what it in reality also provides, not only body interest. We’ll increase the precision of your Geo-Ip tech system by giving ongoing reputation. Unfortunately, the fresh new Geo-Internet protocol address tech system cannot warrant 100% accuracy whenever deciding your local area. A suitable platform will allow reasonable- and you may high-well worth purchases throughout your common means. These tend to correspond that have deposits and you can transactions.<\/p>\n

The brand new Divine Luck Gold slot centres to the broadening wilds, coin collection and you will around three levels out of respins that have a progressive jackpot. The newest Divine Luck Gold position from NetEnt try a historical Greece-styled follow up starred on the a great 5×3 grid which have 10 paylines. The brand new royal food include special added bonus has for example gluey wins and 100 % free spins. Of all of the online game symbols, the brand new fruit signs feel the large earnings. On Queen regarding slots slot, the fresh cards signs have the reasonable profits.<\/p>\n

WR away from 30x Put + Incentive number and 60x Twist earnings count (only Slots count) contained in this thirty days. Full honor listing inside main terms. Totally free Spin profits paid because the cash. 100 % free Revolves need to be starred in 24 hours or less off allege.<\/p>\n

The latest effective signs gets stuck set up because the most other reels re also-spin to boost your payouts. Needless to say, this has the highest payouts of all of the game icons. Discover the set of casinos online at the our webpages in which 100 % free slot can be obtained and check its incentives and you may advertising. Starting having as little as 0.twenty five coins or 25p and going the whole way to ?250.<\/p>\n

Try the newest Divine Luck Gold totally free gamble adaptation to understand more about its enjoys chance-totally free. House Spread symbols for the Queen regarding Harbors in order to bring about Totally free Spins, in which wins is going to be multiplied, enhancing winnings inside added bonus cycles. Individuals must set a max wager off 10 gold coins for each move, is eligible for a great 99% RTP to the limitation bet, hence escalates the likelihood of profits.<\/p>\n","protected":false},"excerpt":{"rendered":"

Towards of a lot honours being offered here, you are going to feel just like a king after you finish the play lesson! Inside the Queen of Harbors, this type of choice to all practical symbols (excluding scatters), boosting your possibilities to mode successful combos. Surprisingly, while in the Totally\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-122615","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122615","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=122615"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122615\/revisions"}],"predecessor-version":[{"id":122621,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122615\/revisions\/122621"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=122615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=122615"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=122615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}