/* 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":79822,"date":"2026-05-22T23:17:34","date_gmt":"2026-05-22T23:17:34","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79822"},"modified":"2026-05-22T23:17:36","modified_gmt":"2026-05-22T23:17:36","slug":"wms-demo-ports-%ef%b8%8f-play-34-free-slots-online","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/wms-demo-ports-%ef%b8%8f-play-34-free-slots-online\/","title":{"rendered":"WMS Demo Ports ️ Play 34+ Free Slots Online"},"content":{"rendered":"

Its sugar rush 1000 slot enimm\u00e4isvoitto<\/a> trip first started back into 1943 and they have been doing quality game to the gambling world ever since. When you release any of the WMS tailored and you can provided slot game you do have quite a number of other option settings at your disposal that will will let you lay up your very own novel slot to play lesson. It doesn\u2019t count at which casino site you decide to play at the who has being offered the new epic and you can high to play list of WMS slot game, to you are likely to find low risk and you can low variance ports, and you can as well as find plenty of average risk average variance ports. As you can pick and choose the new coin worth settings when to play WMS slot game, that means you are going to be able to play him or her for the stake height we want to play him or her to have.<\/p>\n

To have movie admirers we may highly recommend you are taking a look at the new John Wayne slot, for that slot has a payout commission as well as out of 95.00% and if to play it you could take advantage of multiple successful spins thanks to its novel feature you to carries on spinning united nations-matching reel symbols when a winning consolidation is formed. It was property based bricks and you can mortar slots you to WMS in the first place come to manufacture, and it will be a fair bet you to any kind of property based casino you do venture into there is banks of its slots being offered. When you are to the hunt for a slots developer who has been in business to have a lifetime and you can hence has released a huge list of other slots over the new years then you will be bringing a good look at your choice of ports designed by WMS. Zeus comes with a highly lucrative free game feature and it wouldn’t be an exaggeration if we titled it one of the first reason why Zeus has liked such as a huge dominance on the world of slot game.<\/p>\n

The most popular slot machine created by this company is Giant\u2019s Gold Slot, a gambling server that has an attractive fairy tale theme and you can tons of bonuses, as well as free spins. WMS ports online are not just full of quality but are as well as fancy in terms of its improved physical has such as templates and you can graphic factors. As the best worldwide brand name out of epic online slots, Williams Markets is known for the highest quality gambling servers. Things by this well-known vendor come with glamorous templates and features that make all the to play feel worth it. The new vendor\u2019s fiery products are obtainable thanks to one device because they are designed to be compatible with HTML 5 tech. Out of branded game such as Kiss and you can Anchor Boy so you can epic board game worth to play, WMS is home to the most interesting game.<\/p>\n

This allows to have videos animations to be displayed along the mechanical reels, doing an active gambling feel you to combines the new physicality out of vintage ports to the immersive nature out of videos ports. That have stacked wilds, free spins, and you can frequent winnings, Zeus has been a staple in many online casinos. The new colossal reels can lead to grand winnings, especially when stacked symbols line up around the each other sets. The combination out of high volatility and the opportunity for big winnings has players returning for more. Whether or not you want spinning the new reels on your mobile or tablet, Williams Interactive ports are made to send seamless gameplay to the one platform.<\/p>\n

From there, everything you\u2019ll have to do is boot up your favourite mobile browser, log into the new casino of your choice, prefer your favorite game, and you can initiate to play! As a result, it\u2019s high to see if an online casino can get players its winnings in this dos-three days. After you\u2019ve done filling out one versions required by the new casino, you\u2019ll next prefer a deposit option as well as a welcome bonus. To this day, WMS has created a line of popular ports such as Monopoly, The new Genius out of Ounce, Star Trek, and the Lord of your Bands.<\/p>\n

The only difference is real bets and you can real winnings. Pig symbols deliver the high winnings, when you are arsenal, saw, and you can tape scale symbols give mid-diversity beliefs. Commissions can be earned if the an account is created or dumps are made thanks to such links. NetEnt has created some of the most popular game on the world, as well as Starburst, Gonzo\u2019s Journey, and you can Dead or Live. From the beginning, NetEnt could have been known for creating high-looking ports and you can casino games, and their image is much better than what you\u2019ll find out of very company. Raging Rhino is one of the most unstable WMS free online ports, and it\u2019s tailored up to a good 6-reel, 4-row settings.<\/p>\n

Wagering & max wins apply. Max bet is ten% (min \u00a30.10) of your free spin winnings and you can bonus count or \u00a35 (low count applies). WR out of 10x Deposit + Bonus count and you can 10x Free Spin winnings count (just Ports count) in this 30 days. To help finance our works we may earn a recommendation commission for those who do an account via our site. But not, the company is mainly known for its line of unique and you can creative slot game.<\/p>\n

Shuffle Master, a white & Wonder studio, created the brand new 88 Fortunes, and you can Bally Technology next put out that it awesome sequel. The new bright room\/jewel-themed vintage slot is played to the a good 5×3 grid that have ten paylines and has grand payout potential. In addition to WMS free ports with various bonus has, WMS has created RNG casino games, such as blackjack, baccarat, and you can roulette. All the ports, dated and you can the new, had been written or updated using the latest technological improves, allowing you to play on the new wade. Whether or not you\u2019re also to the vintage fruit servers or videos ports that have a movie theme, WMS ports get it all the.<\/p>\n

Many of its ports is played out in the average way out of to play, but the company also has obtained licences to make game based to the popular board games. In terms of its videos ports, WMS Gambling has a lot of high what to give. Entertainment is never not having in terms of WMS Gambling, so you can look forward to certain very epic game you to merge high templates, and you can immersive graphics to make fun experience for everyone. Most other game at the same time are made in the a more retro design that have dated graphics that create a very vintage and you can sentimental atmosphere. So far, WMS Gambling has managed to do a very comprehensive library full of all the categories of game.<\/p>\n

In fact, it\u2019s one of the best online gambling app company if it comes to mobile ports. God out of Thunder is the best on the collection, giving about three bonus wheels and you can five repaired jackpots, to the opportunity to win up to $one hundred,one hundred thousand on the 5-reel online slot. Score spinning and you\u2019ll take advantage of Mega Wilds, Crazy Transmits, and you can a free spins bonus. The new cabinets to be designed by the company will be the Gamefield xD and you can Blade (2013).<\/p>\n

Plenty of care goes in choosing a casino site; i never choose one at random. A prolific developer you to rolls away multiple ports every year, Pragmatic Play is putting on a reputation to have feature-steeped game that have hitting image. Some of the most identifiable ports are from that it developer, doing notable game as the 1990. A good trailblazer in the game fairness analysis and you can world control, Microgaming works with of many subsidiaries and now has a portfolio totaling over 500 slot game.<\/p>\n

Such headings are high volatility, proving that there can be dead spells prior to landing a winning spin, but the winnings will be generous after they hit. Creative gameplay to the classics such as Monopoly, the new timeless storylines out of Genius out of Ounce, and you can step-packaged Zeus give player-amicable interfaces. It offers novel symbols to the paytable you to improve the gameplay feel, that have likelihood of landing more win cycles for each spin. Its line of one hundred+ launches, as well as vintage step 3-reel headings, also offers a wide range of bet models to suit players that have other budgets. All the game you to WMS do is safe and credible that have easy gameplay. Its table and you can card games is lesser known, but they are unbelievable in terms of design and you can image, so they are definitely worth a play.<\/p>\n

WMS decided to do the same that have a range of vintage arcade headings which have been even ported so you can home entertainment solutions. Yes, it\u2019s you can on the demo mode and all the new casinos you will meet will give you that it opportunity. So people who enjoy vintage servers on the earlier with some creative, progressive has can find such game thrilling enough!<\/p>\n","protected":false},"excerpt":{"rendered":"

Its sugar rush 1000 slot enimm\u00e4isvoitto trip first started back into 1943 and they have been doing quality game to the gambling world ever since. When you release any of the WMS tailored and you can provided slot game you do have quite a number of other option settings at\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-79822","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79822","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=79822"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79822\/revisions"}],"predecessor-version":[{"id":79823,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79822\/revisions\/79823"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79822"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}