/* 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":108605,"date":"2026-05-25T11:52:12","date_gmt":"2026-05-25T11:52:12","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=108605"},"modified":"2026-05-25T11:52:14","modified_gmt":"2026-05-25T11:52:14","slug":"heidis-bier-haus-slot-are-charming-featuring-its-rich-graphics-and-you-may-top-quality-soundscape","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/heidis-bier-haus-slot-are-charming-featuring-its-rich-graphics-and-you-may-top-quality-soundscape\/","title":{"rendered":"Heidi’s Bier Haus slot are charming featuring its rich graphics and you may top quality soundscape"},"content":{"rendered":"

When you get five in a row collectively an excellent payline, you’ll result in the latest totally free revolves ability<\/h2>\n

It actually was put-out during the , but it is still preferred for the good award aspects and you may cross-system gamble. I preferred the idea that all the potential bonus enjoys is actually linked through the totally free revolves online game; this permits for many diversity in the play Wisho app<\/a> instead complicating the newest monitor with multiple special icons. When you are keen on games you to definitely merge fun templates with unique formats and you will fun added bonus have, then you will have to gamble so it position. Should you hit at the very least five of these anyplace on the the newest screen, you are able to secure some 100 % free revolves. Once more, it\ufffds a safe place for all of us to spark discussions and you can fulfill people without having any usual anxiety and you may tension from societal settings. I’ve tons of free mahjong online game that will be greatly prominent among members, and Mahjong Dimensions, Mahjong Candy, as well as the classic Mahjong Solitaire.<\/p>\n

I might price the overall game 4.0 from 5, due to the Hd images and several incentive has. The newest RTP talks of the fresh new payouts along side longterm, so professionals expect you’ll bypass $96 for every single $100 gambled.<\/p>\n

Heidi’s Bier Haus slot’s graphics be consistent round the each other cellular and you will pc types<\/h2>\n

Having its average volatility, Heidi Slot machine game is generally considered a famous choice one of members. Along with its wildly popular average-volatility slot, Heidi Casino slot games, you will be transmitted so you’re able to an energetic Oktoberfest beer hall, that includes 6?six reels and gluey wilds which can make you stay returning for much more. The latest crazy symbol regarding game is actually represented of the alcohol toast and you may behaves as always, replacing any signs but Heidi’s.<\/p>\n

However, the game enjoys a rich assortment of added bonus enjoys, making certain it is possible to continuously come across thrilling special occasions that possibly enhance your winnings. Whether you are waiting around for your day-to-day travel otherwise leisurely on your own favourite playground, you can access the fresh alive arena of Heidi’s Bier Haus with just tap. Besides this, it is possible to possess adventure regarding arbitrary wilds and you will icon transformations. Heidi’s Bier Haus takes satisfaction in its diverse variety of added bonus has one keep members thoroughly engrossed, spinning the new reels strong for the nights. Appreciate antique slot mechanics having modern twists and you will enjoyable extra cycles.<\/p>\n

Sign-up and build your 1st put of $10+ utilizing the password STARS600 and you may receive 100% Complement so you can $five-hundred right away! The greater amount of icons take the latest screen, the greater 100 % free Revolves you earn. The fresh Free Spins symbols did come multiple times into the one row regardless if, so it’s entirely possible to obtain the entire playground filled that have Free Revolves icons. Almost every other sound-consequences provided cheering and you may chanting people in the newest pub too since toasting out of cups to one another. In most cases there is no tunes unless there had been totally free revolves signs towards screen. Heidi from the Oktoberfest allows us to pursue young blonde Heidi because the she work at Oktoberfest, serving copious quantities of alcoholic beverages so you can a crazy distinctive line of people remembering this Italian language holiday!<\/p>\n

Among the many trick places of online slots games is their usage of and you may diversity. Online position games are located in some templates, ranging from classic hosts so you can involved video slots which have in depth graphics and you may storylines. It has got extra extra features in addition to a controls incentive video game where you can win one off four jackpots. Bier Haus enjoys 2 scatter icons that cause 100 % free revolves having a possibility to retrigger to 80 free revolves inside one to go.<\/p>\n

It\ufffds nice for amateur players, because the added bonus has are straightforward plus don’t discharge a totally the fresh new games on added bonus bullet. The good news is, I had a top sufficient wager that people revolves repaid. The online game is also made to work perfectly for the less windowpanes which is offered by extremely safe cellular casinos, so it’s a great games to try out while on the move. You have the opportunity to win huge, nevertheless when the newest totally free spins initiate, you may not have the ability to change your wager for every single range.<\/p>\n

Products generally tend to be deposit constraints, wagering hats, go out reminders, timeouts, and you may worry about-exclusion solutions. Heidi’s Bier Haus, as with any ports, functions as a chance-based product that have effects influenced by haphazard amount generation. Extra lead to opportunities remains unaffected by choice height, however, monetary visibility grows. A demo variation shows an identical key auto mechanics, paylines, and features because a real money game, offered an agent supports it.<\/p>\n

The brand new insane icon was one glass of beer which will exchange all others to form winning combinations apart from the new green red-colored and you may reddish Heidi signs. There are many motif-related icons in addition to a happy drinker (Hans), the brand new bar by itself, a steel stein, a keen accordion, a trumpet, a vintage hat and you will a pretzel; credit cards signs make up the lower viewpoints. These could are from each other private Beastino advertising and you will individually inside the video game, giving you particular power over the amount of extra rounds you located. Since you plunge for the unique rounds, you will find a realm of wilds, scatters, and you may book symbols one to boost your probability of victory. The latest appeal off Heidi Hunt surpasses the simple game play; the extra features truly take the fresh spotlight. The most significant group puller of your own online game rests to the its best-notch three-dimensional image that give you spin the game to have times.<\/p>\n

Heidi In the Oktoberfest Position doesn’t have a progressive jackpot, nevertheless makes up for this which have enjoyable ft game aspects, feature-packed cycles, and a good RTP. Both effortless game play and big profits that may occurs on the extra series allow it to be a good choice for people who want to have some fun and perhaps victory loads of currency. There are even haphazard change to your reels and you will interactive side games that can happens at any time and create a fun function to your regular spin course.<\/p>\n

Any moment regarding the legs online game otherwise totally free spins, the newest Tapper normally at random move one\ufffd6 reels to your complete insane reels. While in the totally free spins, nuts Hans can seem at random, tossing four\ufffd10 additional wilds over the reels. Heidi Check is just about to give us huge prospective winnings, a very long variety of enjoys and you can attractive image, so it is a great choice for a lot of members. It resides in one to middle space where you’ll see frequent smaller wins, into the actual juice hiding regarding added bonus enjoys and also the advertised maximum payment all the way to 5333xx the choice. An arbitrarily brought about element that guarantees a win out of one to twist.<\/p>\n

Added bonus cycles, plus an effective tapper jackpot and you will free spins, remain productive. Have merge to own quick-moving engagement as a consequence of superimposed technicians. This amount shows the brand new expected get back off full wagers throughout the years. Gamblers twist playing with digital credit to test aspects, RTP activities, add-into the produces, along with volatility swings.<\/p>\n","protected":false},"excerpt":{"rendered":"

When you get five in a row collectively an excellent payline, you’ll result in the latest totally free revolves ability It actually was put-out during the , but it is still preferred for the good award aspects and you may cross-system gamble. I preferred the idea that all the potential\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-108605","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/108605","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=108605"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/108605\/revisions"}],"predecessor-version":[{"id":108631,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/108605\/revisions\/108631"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=108605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=108605"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=108605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}