/* 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":131529,"date":"2026-05-25T17:22:17","date_gmt":"2026-05-25T17:22:17","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=131529"},"modified":"2026-05-25T17:22:18","modified_gmt":"2026-05-25T17:22:18","slug":"free-casino-games-wager-enjoyable-22800-demo-video-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/free-casino-games-wager-enjoyable-22800-demo-video-game\/","title":{"rendered":"Free Casino games Wager Enjoyable 22,800+ Demo Video game"},"content":{"rendered":"

That it advances the amount of paylines otherwise an easy way to win, boosting successful possibilities. Wins try shaped by the groups regarding complimentary symbols pressing horizontally otherwise vertically, instead of traditional paylines. This produces expectation since you advances towards causing fulfilling bonus cycles. Knowing the certain provides for the slot video game is rather lift up your playing experience. These types of video game commonly are familiar catchphrases, extra rounds, featuring that mimic brand new show’s structure.<\/p>\n

Mining-themed slots tend to ability volatile bonuses and you may active gameplay. Halloween-styled harbors are great for excitement-seekers interested in a great hauntingly good time. Gem-themed slots are visually excellent and often ability easy but really interesting gameplay.<\/p>\n

To begin with to experience your favorite free harbors, flick through all of our library, strike the gamble switch and you are clearly all set. With the multitude out of online casinos and video game readily available, it\u2019s vital to can make sure a safe and you will fair betting sense. Such video game offer emails to life with dynamic graphics and you will thematic extra provides.<\/p>\n

Together with, with increased designers offering totally free ports game down load selection and totally free play online casino games on line, you have access to advanced blogs without paying a penny. Here are some the recommended finest casinos on the internet on the biggest slots experience\u2014full of bonus possess, 100 percent free revolves, and all sorts of the new excitement off antique gambling games and progressive position hosts. Top gambling establishment websites in addition to be noticed by offering fast profits, generous deposit incentives, and a person-amicable user interface making it easy to find your preferred video game. Find online casinos offering many position online game, including totally free spins bonus rounds, real cash betting alternatives, and plenty of local casino slots with unique themes.<\/p>\n

Designed with Playtech’s trademark awareness of outline, Mega Fire Blaze Roulette comes with a smooth and you will user-amicable 3d software, to ensure you can envision oneself on roulette dining table. The game’s distinctive Flames Great time and you may Super Fire Blaze Extra keeps create a touch of spruce for the play, providing people the chance to earn high earnings of up to 9,999 to at least one. So you’re able to profit, participants need certainly to property about three or maybe more coordinating signs when you look at the series across the all paylines, starting from brand new leftmost reel. Are you aware that game play, the brand new slot is actually played with the an excellent grid one include five rows and you may four articles.<\/p>\n

Settle down Betting makes a name to have in itself through providing a beneficial number of slots you to serve more user needs. In pretty bad shape Crew and you will Cubes program their ability in order to mix simplicity which have imaginative aspects, giving novel experiences one to stick out on crowded slot business. Their minimalist design method results in clean, easy-to-navigate connects one to still submit interesting provides. Titles for example Jammin\u2019 Containers bring team will pay and broadening multipliers, whenever you are Razor Shark introduces the fresh new exciting Mystery Piles feature. Force Betting integrates visually hitting graphics which have inventive gameplay aspects.<\/p>\n

Let\u2019s explore a number of the standout have that produce real time harbors a bump throughout the casino community. \u201cThe latest concept was clean http:\/\/tedcasino-uk.com\/en-gb<\/a> , and the filter systems generate interested in my personal favorite spread out harbors video game super effortless.\u201d \u2014 Sarah, 26, Cape Urban area We pick casinos that offer the best on line slots, exciting added bonus have, and a lot of 100 percent free spins incentive possibilities to continue stuff amusing. Whether you\u2019re also spinning the newest reels of classic ports for that nostalgic disposition or exploring the latest movies harbors which have brilliant graphics and you may sound, there\u2019s a position for each spirits.<\/p>\n

You can find how often a slot pays out and its particular added bonus rounds end in, preview what to anticipate whenever unique signs residential property, and check in the event your overall motif, image and you may game play match your design. To tackle this type of into the demonstration function is the most effective way to learn just how a position behaves ahead of risking the money. Generally speaking to own releases regarding Nolimit Area, additionally offers an enormous better honor (twenty-five,920x), great number of paylines (729), and you will pretty good strike rates (21.5%). This means the video game possess all in all, 262,144 paylines, that’s a great deal more than just several of my personal well-known Megaways slots including Light Bunny Megaways and you can Madame Future Megaways.\u201d Bingo is fun to relax and play, but when you\u2019re looking for pure recreation without risk attached, totally free bingo is an excellent choice.<\/p>\n

Most advanced online slots are made to be played for the both desktop computer and you may mobiles, such as for instance mobile devices otherwise tablets. Any ports which have fun bonus cycles and big names is preferred which have harbors participants. Don\u2019t disregard, it’s also possible to check out our very own gambling enterprise analysis for folks who\u2019re seeking 100 percent free gambling enterprises in order to obtain. Regardless if you are interested in 100 percent free slots having free revolves and you will extra rounds, such branded slots, or vintage AWPs, we\u2019ve got you secured. Anytime a modern jackpot position is starred rather than won, this new jackpot grows. Multi-way ports along with award prizes having hitting similar signs towards the surrounding reels.<\/p>\n

For those who for example 100 percent free video game, this web site features hundreds of gambling games. To tackle directly on the net is the newest trusted treatment for initiate to play immediately instead of downloading one thing. For individuals who install games towards desktop, you acquired\u2019t be able to accessibility him or her while using other gadgets.<\/p>\n

Most of the online game try harbors, that makes sense, since online slots games are the quintessential popular kind of gambling games. 100 percent free gambling games are a comparable games you could play for the genuine-currency online casinos, however, in place of real money inside. We want to come across an established casino that may in reality pay out your payouts for folks who be able to earn profits, best? We have been today swinging into a world of more advanced and immersive development that have the possibility so you’re able to transform this new gaming sense. Not so long ago, Flash was the fresh new go-to help you tech you to casinos on the internet relied onto means securely.<\/p>\n

You\u2019ll end up being inspire\u2019d that have fun slot online game including Demon\u2019s Secure™, Money Mania Cleopatra™, Wheel from Chance™, Diamond Spins 2x Wilds and so much more! Alive Bingo and more than several very-fun Keno game like Roulette, and you will Black-jack can also be found to relax and play! See most other professionals on the famous Fox Tower™ and you can Grand Pequot Lounges where you are able to talk, purchase beverages, and show into the fascinating jackpots! It’s your ultimate place to go for betting and you may real time activities. Overall here\u2019s one hundred+ pleasing totally free ports which have extra video game! Unveiling brand new kind of FoxwoodsOnline\u2026it\u2019s laden up with a huge amount of fun Additional features.<\/p>\n

Inside point, you could discuss solution pages various other languages and for additional target countries. Totally free harbors and you will casinos supply the same roster away from games zero matter the system you\u2019re also on the. Contemplate, free slots shouldn\u2019t want any packages, and you should manage to play her or him directly in your browser with internet access. You can quickly initiate to experience on the demo means otherwise trial variation. You can do this as a result of 100 percent free revolves or particular signs one let unlock other bonus enjoys.<\/p>\n","protected":false},"excerpt":{"rendered":"

That it advances the amount of paylines otherwise an easy way to win, boosting successful possibilities. Wins try shaped by the groups regarding complimentary symbols pressing horizontally otherwise vertically, instead of traditional paylines. This produces expectation since you advances towards causing fulfilling bonus cycles. Knowing the certain provides for the\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-131529","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131529","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=131529"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131529\/revisions"}],"predecessor-version":[{"id":131530,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131529\/revisions\/131530"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=131529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=131529"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=131529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}