/* 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":99942,"date":"2026-05-25T11:19:38","date_gmt":"2026-05-25T11:19:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=99942"},"modified":"2026-05-25T11:19:38","modified_gmt":"2026-05-25T11:19:38","slug":"this-means-you-might-enjoy-totally-free-slots-towards-the-web-site-that-have-zero-registration-or-downloads-necessary","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/this-means-you-might-enjoy-totally-free-slots-towards-the-web-site-that-have-zero-registration-or-downloads-necessary\/","title":{"rendered":"This means you might enjoy totally free slots towards the web site that have zero registration or downloads necessary"},"content":{"rendered":"

Continue https:\/\/spinshake-casino-uk.com\/<\/a> reading for more information from the online harbors, otherwise scroll doing the top of this site to choose a game title and commence to tackle right now. OnlineSlots isn’t really an online gambling enterprise, the audience is another online slots games review website one pricing and you may ratings web based casinos and you can position game.<\/p>\n

Significant technological and inventive milestones provides ent away from free online headings, changing most of the number of years. These business offer fresh templates, enjoyable gameplay, and you may higher RTPs. No packages otherwise registration are required because of HTML5 technology, making certain simple results towards cellular internet explorer. To try out totally free ports online instead getting or subscription for the cellphones including ios and you will Android is much easier and easy. We have found a list of more strange and inventive layouts ever came across inside the totally free position online game and no indication-right up otherwise login requisite, presenting quick play.<\/p>\n

If the rather you select free spins, you will get five 100 % free online game and you may a \ufffdrich\ufffd reels ability. Aforementioned aspect is really what sets Da Vinci Diamonds’ incentive aside out of others. During this incentive, graphic signs try to be scatters and can submit winnings from anywhere on the board. The other wilds needless to say assistance with regard to claiming bigger payouts.<\/p>\n

For the reason that particularly spins are included in all round mechanics of your own gambling games<\/h2>\n

The audience is constantly giving the fresh and you can impressive bonuses, plus free gold coins, totally free revolves, and you will everyday benefits. Having so much to select from, we understand you can find your perfect story book thrill. Just assemble gold coins because you gamble \ufffd rating adequate and you may move up to the next level! In this case, there are a lot of real slot machines to love, inspired because of the flooring of several popular land-based venues. Just the the best free slot machines allow to which epic set of finest headings.<\/p>\n

In addition to the reputation features, Loved ones Guy also provides about three incentive rounds – Drunken Clam, Poultry Fight and you can Lois’ Hot Spins. The newest protected stacked wild helps strengthen profits through the 100 % free revolves. The fresh trivia bullet is specially interesting because it enables you to respond to issues having instantaneous earnings. Many Dominance position headings exists regarding the gaming world.<\/p>\n

Totally free revolves and lso are-spins create an extra element of excitement for the gameplay and you may earnings. The system benefits a lot of time victory stores and you may makes unmarried spins capable of creating numerous earnings inside the series. Offered since the 2015, the new facility enjoys attained their profile of the concentrating on have, access to, and you can advantages of the online game. Mention video game has and you may technicians, examine games, and check out all of them as opposed to membership or dumps. You might like to like harbors particularly China Coastlines otherwise Dancing Electric guitar, that provide the same combination of themes, bonus rounds, and good payout aspects.<\/p>\n

Because the a totally free-to-enjoy app, you’ll be able to explore a call at-video game money, G-Coins, that simply be used in to experience. All of us people are welcomed, and users who live in the regulated countries and are also struggling to enjoy on line genuine-currency gaming. Gambino Slots is completely legitimate and you can available for harbors admirers all of the over the world to enjoy.<\/p>\n

Casinogamesonnet also provides over 7,000 totally free slots without obtain no membership regarding 150+ business such NetEnt, IGT, and you can Big style Gambling. You can earn advantages particularly a free of charge money current and a lot more. For every spin perks people that have sense factors. You are able to earn countless hours from enjoyable and you can adventure that lighten enhance go out. The new free slot machine game does not give real money otherwise bucks advantages. Finally, you are invited to subscribe certainly one of Jackpot Group Casino’s on line teams, where unique benefits are supplied to help you players.<\/p>\n

This type of position layouts have been in our very own top list because the participants keep going back on them. From the information such core features, you might easily compare harbors and get choices offering the fresh right balance from chance, reward, and you can game play design to you. Progressive online ports come packed with fascinating has built to increase winning possible and keep game play fresh. An educated the new slot machines include a lot of incentive cycles and you may totally free revolves to own a rewarding feel.<\/p>\n

They differs from all other game with this list, which are offered by real cash casinos on the internet. Go to all of our loyal online ports web page playing totally free slot video game which have added bonus cycles no obtain no registration requisite. Harbors that have incentive cycles try a hugely popular appeal at Us web based casinos.<\/p>\n

A single bonus can also provide other sets of spins privately associated with the quantity you put. You will find wishing a leap-by-move guide on how to make use of the most common put-dependent gambling establishment totally free spins, which affect really online casinos. You could secure additional spins of the obtaining the right consolidation off icons. Most online slots ability a call at-game totally free revolves bonus, leading them to a greatest option for members seeking to free ports that have added bonus and 100 % free spins. These types of casinos on the internet 100 % free revolves usually are considering as the a present to have gamblers’ support and you will incorporate a high wager matter.<\/p>\n

If enjoyable 100 % free ports having incentive feature, there are two main ways to end in they<\/h2>\n

You can twist the brand new reels, discover extra cycles, and you may assemble advantages with just a few taps. You may also sign-up tournaments the place you compete against most other users to own benefits and you may leaderboard areas just by seeing totally free harbors zero install required. Below are a few of the very common titles you to people keep coming back so you can, for each giving novel enjoys, themes, and you may game play appearances. Such team render creative auto mechanics, excellent design, and you may novel added bonus features to each and every label. And you can as a result of all of our founded-inside the gamification program, you can earn rewards, over pressures, and you may sign-up tournaments, most of the playing for just enjoyable.<\/p>\n

The free slots, no-deposit, without subscription, provide specific a means to double possible winnings as a consequence of unique have and incentives. Out of creating added bonus series so you can triggering unique signs, information these types of elements can boost their playing feel and you will notably boost your own payouts. This informative guide explores various tips for reaching x2 multipliers in a number of popular, no-download free slot game which have quick enjoy provides and extra roundsparing totally free three dimensional and you will free videos ports no obtain reveals distinctions inside game play, picture, and you may user experience. Talking about best for users whom delight in a sentimental gaming experience. Pursue this type of nine tips for instant enjoy within the totally free ports which have no down load without subscription towards casinogamesonnet.<\/p>\n","protected":false},"excerpt":{"rendered":"

Continue https:\/\/spinshake-casino-uk.com\/ reading for more information from the online harbors, otherwise scroll doing the top of this site to choose a game title and commence to tackle right now. OnlineSlots isn’t really an online gambling enterprise, the audience is another online slots games review website one pricing and you may\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-99942","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/99942","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=99942"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/99942\/revisions"}],"predecessor-version":[{"id":99943,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/99942\/revisions\/99943"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=99942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=99942"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=99942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}