/* 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":52138,"date":"2026-05-20T12:36:56","date_gmt":"2026-05-20T12:36:56","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=52138"},"modified":"2026-05-20T12:36:56","modified_gmt":"2026-05-20T12:36:56","slug":"when-searching-for-100-free-slot-machines-on-the-internet-you-will-need-to-look-no-further-than-onlineslotsx","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/when-searching-for-100-free-slot-machines-on-the-internet-you-will-need-to-look-no-further-than-onlineslotsx\/","title":{"rendered":"When searching for 100 % free slot machines on the internet, you will need to look no further than OnlineSlotsX"},"content":{"rendered":"

The goal of zero download zero subscription harbors games is to provide the same excitement because typical slots. Players like to tackle free online harbors, and then can be done thus in place of getting anything otherwise joining a free account with us! Many other great online casino games for example Short Hit and you will 5 Dragons can be found too but the majority of cannot be starred as opposed to to make an enthusiastic initial deposit in order to supply all of them. This post walks you from current 5,000+ 100 % free slot machines that have added bonus cycles and indicates on how to play these types of totally free video game instead of money otherwise subscription.<\/p>\n

So it meter are reset for every single twist, but getting between 6 and 14 hook & earn symbols usually trigger the hyperlink & win ability, awarding people a small, minor otherwise biggest jackpot honor. The newest of online slots of Fluorescent Area Studios is the new colder-chill Snowy Enchantress slot machine game. He’s titles between the new ancient Roman theme of your own Caesar Augustus casino slot games towards deep sea escapades offered to players on Atlantean Gifts Megah Moolah slot machine game. You could speak, work together and explore almost every other people that’s an excellent extra having made on line slot machines prominent.<\/p>\n

The latest game’s retro-style image and you can atmospheric soundtrack create a temperamental but really pleasant gambling sense, and make Tear Area vital-play for people who like a-twist on the vintage cat- dynabetcasino.dk<\/a> and-mouse competition. It may features simply become from the successful a cigar and a good nod regarding the bartender in the past, nevertheless set the latest stage towards fascinating slot machine skills we currently delight in in casinos an internet-based playing systems. Thus, regardless of where and you can but you gamble slot machines, you’ll find just what you are interested in once you carry out an account at the Slotomania!<\/p>\n

TheBestFreeSlots ‘s the greatest place to go for anyone trying to explore good vast distinct more 24,000 online slots. The limitless variety of online game is sold with the best harbors ever created to the fresh titles regarding app company throughout the world. Here are some are our list of free online harbors comprising a lot more than twenty five,000 headings which you undergo group from the batch.<\/p>\n

Playing with virtual currency, you can enjoy to relax and play your favorite harbors as long as you want, together with prominent titles as you know. Free ports try digital slot machines that you can delight in in place of the necessity to bet a real income. Towards our web site, discover countless 100 % free slot machines to tackle rather than getting, joining, or expenses things. All of the on line slot machines is actually personally on every internet browser, to enjoy versus getting things directly from SlotJava or by hooking up on the local casino website.<\/p>\n

Because the specifics may vary, such incentives often mark motivation of antique arcade online game, immersing players during the thrilling ability-based challenges. Regardless if you are seeking admission committed or drench yourself for the a thrilling gambling class, the totally free game slots casino headings make certain an enjoyable drive. Create your earliest put and you will discover an exciting greeting added bonus off 100 Free Revolves to your selected harbors! Whether you are seeking admission committed, discuss the latest headings, or score comfortable with web based casinos, online ports provide an easy and enjoyable treatment for gamble. Should it be the latest wacky auto mechanics off Coba or the nostalgic class end up being of Rave, there is always new things to explore. Triggering extra rounds is one of the most exciting components of to try out slots, but often it feels like it grab permanently to hit.<\/p>\n

Here discover the best selection regarding 100 % free demo harbors on the the internet. And, we shall strike their inbox on occasion with unique also offers, big jackpots, and other things we’d dislike on exactly how to skip. The hardest part of online slots is actually being aware what the guidelines try. Free ports will always totally safe given that they don’t undertake real money. Because you don’t need to create a free account, you are not getting many information that is personal. That’s because a lot of the gambling app builders promote its titles to help you one another stone-and-mortar gambling enterprises as well as web based casinos.<\/p>\n

They are able to learn the interior processes of your seat whilst experiencing the excitement regarding journey during the an online park rather than actually ever taking airline. Regardless if you are an amateur or a professional on line gambler, you may have discover online slots games – these represent the hottest form of gaming. My personal mission, will be to offer you only the best online slots games feel and therefore mode only reviewing and you can recommending sites which might be licensed to operate in the united kingdom.<\/p>\n

Frankly, there’s a free position out there along with your term involved<\/h2>\n

Well-known benefit is the fact there’s absolutely no economic exposure; you may enjoy occasions off entertainment and the adventure of your own \ufffdwin\ufffd versus coming in contact with their bankroll. Offering a complete lineup off iconic competitors particularly Ryu, Chun-Li, and you will Ken, the overall game enables you to get a hold of your own reputation and you may race across reels having fun with a fantastic team will pay mechanic. The vast distinct demo slots makes the choice to own fascinating gameplay practically unlimited. Regardless if you are a new player trying to find an enticing greeting extra otherwise a skilled gambler seeking lingering offers like 100 % free slots on the web no-deposit offers, SlotsCalendar is the respected partner.<\/p>\n

Reliable company such as NetEnt, Microgaming, and you will Playtech make higher-high quality online slots games<\/h2>\n

When you find yourself playing totally free slots, you can result in a \ufffdwin\ufffd regarding digital currency. Finest ports business including NetEnt, Pragmatic Play, Video game Around the world, and you may Play’n Go carry out this type of slots, which you’ll go for 100 % free. When you gamble totally free local casino ports, you’ll get to experience all of the fun possess and you may layouts of your own video game. Want to possess thrill out of to relax and play position games as opposed to using likelihood of shedding the a real income?<\/p>\n

While you are after exposure-free entertainment, totally free slots could be the route to take. Instead of 100 % free revolves, free position game are completely chance-totally free plus don’t give a real income honors. For every 100 % free spin typically has a tiny cash worth, tend to to $0.ten per spin, and you may one winnings you get typically have wagering conditions. You could found them because the a pleasant extra once you indication up or make your earliest put. Follow on, twist, and enjoy the adventure \ufffd all bells, whistles, and you can added bonus rounds integrated.<\/p>\n

These types of trial mode video game is actually 100 % free slot machine enjoyment, he is indeed there to utilize as the a tool from activity and you can to greatly help professionals having strategical learning. ? Sure, you’ll have 100% brand new and real online casino games and you will servers. Of the confirming your age, your acknowledge that this online game is actually for entertainment purposes simply and agree to gamble responsibly. Slotomania\ufffd are a no cost-to-enjoy personal gambling enterprise online game established only getting activities.<\/p>\n","protected":false},"excerpt":{"rendered":"

The goal of zero download zero subscription harbors games is to provide the same excitement because typical slots. Players like to tackle free online harbors, and then can be done thus in place of getting anything otherwise joining a free account with us! Many other great online casino games for\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-52138","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/52138","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=52138"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/52138\/revisions"}],"predecessor-version":[{"id":52141,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/52138\/revisions\/52141"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=52138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=52138"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=52138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}