/* 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":25077,"date":"2026-05-15T02:56:17","date_gmt":"2026-05-15T02:56:17","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=25077"},"modified":"2026-05-15T02:56:19","modified_gmt":"2026-05-15T02:56:19","slug":"free-slots-zero-download-no-subscription-play-trial-harbors-for-fun","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/free-slots-zero-download-no-subscription-play-trial-harbors-for-fun\/","title":{"rendered":"Free Slots Zero Download No Subscription Play Trial Harbors For fun"},"content":{"rendered":"

This was examine the link<\/a> one of the primary titles to help you reveal magnificent high-meaning 3d graphics, and it also\u2019s in addition to an excellent poster son for easy position aspects done well. One of the better pieces is you don\u2019t need to download any app to love Slotozilla\u2019s classic totally free enjoyment. If or not your\u2019re regarding the vibe to own classic templates, jackpot video game, or something more, we highly recommend examining free harbors of the possess. Because of so many prominent titles, the newest members can be thinking how to pick a beneficial video game.<\/p>\n

Sense Norse mythology and you will Asgard with several totally free twist bonuses. Like to play Practical Play\u2019s on the web totally free harbors and get mesmerized from the impressive headings including Wolf Silver additionally the Puppy House. Over two hundred providers global ability their online game, plus popular headings like Firearms Letter\u2019 Flowers, Deceased otherwise Live, and you will Starburst. Once the 1994, Apricot could have been a major member on the market, providing over 800 games, and totally free harbors particularly Mega Moolah and Tomb Raider. You could select many software developers getting on line totally free harbors.<\/p>\n

You could talk about paytables, added bonus cycles, and you can demo gambling possibilities without having any tension regarding shedding real cash. Why don’t you here are a few our very own gang of no deposit bingo websites, which permit you to enjoy free bingo games instead of paying people currency. Look out for low betting conditions and for incentives with no maximum gains. Very first deposit indication-right up incentives should also be checked out with the no deposit offer. Certain local casino and you may harbors web sites render 100 percent free incentives and you can 100 percent free revolves once you make sure the cellular count.<\/p>\n

These are around the globe well-known titles and gives unlimited entertainment for all sorts of people. No-deposit incentives will be finest brand of extra to own players who wish to play free ports as opposed to actually ever to make a deposit. The latest roster comes with a variety of an educated Las vegas ports, vintage 3-reel video game, modern three-dimensional ports with higher incentive enjoys, themed titles predicated on well-known Tv and video game shows, and jackpot harbors. You will not only manage to gamble free harbors, you\u2019ll even be capable of making some cash as you\u2019lso are during the it! Such, you can observe brand new paytable to see just how much the fresh new position will pay away for those who\u2019lso are most happy.<\/p>\n

This type of game usually make use of vintage symbols particularly fresh fruit, bells, and you may happy sevens, with additional features such as nudges, retains, and you will ability-created bonus cycles, adding a supplementary level out-of excitement. Using their effortless aspects, familiar symbols particularly fresh fruit, taverns, and sevens, and you can conventional about three-reel setups, classic slots provide a vintage and you can simple betting experience. Zero, your acquired\u2019t manage to earn a real income if you opt to play totally free ports for fun.<\/p>\n

They\u2019re easy to gamble and don\u2019t you need people unique method\u2014only push twist otherwise autoplay. When you find yourself a new comer to casinos on the internet otherwise wear\u2019t want to spend much, harbors are a good alternatives. The overall game provides a 6×5 grid and you can spends a beneficial \u201cSpend Everywhere\u201d program, thus signs don\u2019t have to land on particular paylines so you can earn. You\u2019ll locate them at almost every online casino in the usa, because the professionals continue to like them now. Place your search terms from the container and search our very own web site into the video game or checklist that you\u2019lso are trying to find.<\/p>\n

Leprechauns, bins away from gold, and rainbows; Irish-themed slots are an old regarding the online gaming globe! If or not you love vintage videos otherwise modern comedies, there\u2019s anything to you personally inside group! In the deepness of one’s ocean for the cardio of jungle, animal-themed ports provide the fresh new insane on screen. Cherries are common and most online game have easy game play, however of these take action much better than other people! Whether you\u2019lso are for the antique fruits hosts, myths, otherwise Halloween night themed online game, all of our on the internet totally free slots without install collection has your secured.<\/p>\n

Waiting for 2025, the slot betting land is set becoming even more fun with anticipated launches out of finest team. Let us look closer from the these superior headings and you may what is actually on the horizon to possess 2025. This type of the newest slots has actually place an alternate benchmark in the market, captivating users with regards to immersive layouts and you can satisfying gameplay. Strengthening with this foundation, “Deadwood” prolonged the new universe having enhanced keeps instance xNudge and you may xWays, improving the profit prospective and you will adding breadth towards the game play. “Tombstone” put people so you can a dark Wild Western function full of outlaws and you will sheriffs, offering book technicians such xNudge Wilds that’ll end in good winnings. Your dog Home show are dear for its humorous picture, enjoyable provides, and also the joy it brings in order to canine couples and you will position fans alike.<\/p>\n

This site includes several thousand demo position titles you can gamble entirely at no cost. Into the Casino Guru, you could potentially pick from more than 20,000 trial slots for fun and you may gamble him or her immediately for the people product. We offer multiple an effective way to availableness our very own public local casino.<\/p>\n

The fresh games to alter perfectly to various screen designs, providing smooth gameplay, intricate graphics, and receptive control. Its slots usually tend to be imaginative added bonus features, large variance, and you can charming templates. If you like immersive harbors with significant win prospective, Play\u2019n Wade could be your best bet. Headings such as for example Publication away from Dead, starring this new legendary explorer Rich Wilde, and hexagonal-formed Honey Rush, head a rich inventory away from brand new games.<\/p>\n

Films harbors include interesting visual demonstrations and cutting-edge bonus has actually, as well as numerous more templates available. You can travel to more than 28,eight hundred Movies Harbors only at SlotCatalog, and are also all designed for 100 percent free have fun with no down load required. You can attempt more video game in the event it\u2019s cost-free, because there isn’t any stop to simply how much you could potentially gamble. Even although you you should never victory real cash whenever to play free trial slots zero obtain, it\u2019s nevertheless a powerful way to settle down, have fun, and you may wind down just after a stressful time.<\/p>\n

Online slots games aren\u2019t just an instance from pressing spin, and you also\u2019re over. Furthermore, considering the signifigant amounts away from book element cycles available; it\u2019s usually a good tip playing sometime to discover one to pop earliest. You wear\u2019t must choice a real income, nevertheless still have the opportunity to learn more about they. If you decide to tackle Davinci Diamonds 100 percent free ports no download, eg, you\u2019re also browsing find out how the overall game really works in action. Among the many reason why some one plan to play on the internet ports free-of-charge into ports-o-rama web site will be to teach them a little more about specific headings. For those who don\u2019t know a favourite of one’s three but really, your wear\u2019t want to buy the information and knowledge!<\/p>\n

Online game instance Bonanza and extra Chilli high light the fresh volatile character out of that it invention, providing many ways to profit for each spin. Pragmatic Enjoy\u2019s ports are like a highly-curated playlist \u2014 there\u2019s some thing for every mood, and their video game consistently send highest-top quality development close to a steady flow of new releases. The detailed collection comes with strikes instance Mega Moolah, Thunderstruck II, and Immortal Romance.<\/p>\n","protected":false},"excerpt":{"rendered":"

This was examine the link one of the primary titles to help you reveal magnificent high-meaning 3d graphics, and it also\u2019s in addition to an excellent poster son for easy position aspects done well. One of the better pieces is you don\u2019t need to download any app to love Slotozilla\u2019s\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-25077","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25077","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=25077"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25077\/revisions"}],"predecessor-version":[{"id":25078,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/25077\/revisions\/25078"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=25077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=25077"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=25077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}