/* 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":122368,"date":"2026-05-25T13:18:50","date_gmt":"2026-05-25T13:18:50","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=122368"},"modified":"2026-05-25T13:18:50","modified_gmt":"2026-05-25T13:18:50","slug":"heidis-bier-haus-position-is-actually-captivating-using-its-steeped-image-and-you-will-top-quality-soundscape","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/heidis-bier-haus-position-is-actually-captivating-using-its-steeped-image-and-you-will-top-quality-soundscape\/","title":{"rendered":"Heidi’s Bier Haus position is actually captivating using its steeped image and you will top quality soundscape"},"content":{"rendered":"

If you get four in a row together a payline, you are able to end in the brand new totally free revolves element<\/h2>\n

It was put out in the , however it is however preferred for its solid reward auto mechanics and cross-program play. We appreciated the concept that all of the possibility incentive has is linked from totally free spins online game; this allows for many variety during the play rather than complicating the fresh new display screen with numerous unique icons. If you are keen on game that blend enjoyable templates having unique types and enjoyable extra features, then you’ll definitely need certainly to gamble which slot. Any time you hit about five ones everywhere to the the fresh new monitor, you’ll secure yourself some 100 % free revolves. Once again, it is a secure place for all of us so you can spark discussions and you will satisfy people without the usual stress and you may tension off personal setup. You will find tons of totally free mahjong online game which might be very common certainly one of players, along with Mahjong Size, Mahjong Candy, plus the vintage Mahjong Solitaire.<\/p>\n

I would rates the online game 4.0 out of 5, due to the High definition graphics and many extra features. The fresh new RTP represent the new winnings along the long lasting, so users expect to circumvent $96 per $100 wagered.<\/p>\n

Heidi’s Bier Haus slot’s image remain consistent across the both cellular and pc platforms<\/h2>\n

Using its average volatility, Heidi Slot machine game try commonly regarded as a famous solutions among professionals. Featuring its slots plus casino official site<\/a> significantly well-known medium-volatility slot, Heidi Video slot, you are transferred so you’re able to a lively Oktoberfest beer hallway, filled with 6?six reels and you will gooey wilds that may make you stay coming back for lots more. The brand new nuts icon in the video game try represented by beer toast and you will behaves as ever, replacing some other icons except Heidi’s.<\/p>\n

Although not, the overall game possess a wealthy selection of extra provides, making certain you can continuously come across fascinating special occasions that can probably improve your profits. Regardless if you are awaiting your everyday commute otherwise relaxing on your favorite park, you can access the brand new lively field of Heidi’s Bier Haus which have a mere faucet. In addition to this, you can even experience the adventure off random wilds and you will icon transformations. Heidi’s Bier Haus takes pleasure within the varied set of incentive have you to remain participants very carefully involved with it, spinning the fresh new reels strong towards night. Appreciate antique position technicians which have progressive twists and you can pleasing incentive rounds.<\/p>\n

Sign-up and build your very first deposit out of $10+ by using the password STARS600 and you may discovered 100% Complement so you’re able to $five-hundred instantly! More signs are on the fresh new screen, the greater number of Totally free Revolves you get. The latest Totally free Revolves signs did appear many times to your 1 line even when, it is therefore possible to discover the whole playground filled with Free Spins symbols. Most other voice-effects provided cheering and you can chanting people in the brand new club too since toasting off mugs to each other. More often than not there can be zero songs unless of course there have been 100 % free spins symbols to the display. Heidi at the Oktoberfest lets us realize more youthful blonde Heidi because the she work in the Oktoberfest, offering large quantities of liquor to help you an outrageous collection of individuals honoring this Italian language escape!<\/p>\n

One of several trick web sites of online slots is the the means to access and you will assortment. Online slot games are in certain themes, anywhere between antique computers so you can specialized video slots which have in depth picture and you will storylines. It has extra additional features and a wheel bonus game where you can profit 1 away from four jackpots. Bier Haus features 2 spread out symbols that will bring about 100 % free spins having a possiblity to retrigger doing 80 100 % free spins for the one to wade.<\/p>\n

It\ufffds sweet getting novice members, since the extra has try quick plus don’t launch a completely the newest game on the extra bullet. Fortunately, I’d a premier enough choice that people revolves paid down. The overall game is additionally created to functions really well on the quicker windowpanes that is offered by very safe cellular casinos, making it a fantastic games playing on the road. You should have the chance to winnings larger, nevertheless when the new 100 % free revolves initiate, you simply will not manage to alter your bet for each and every range.<\/p>\n

Systems generally speaking include deposit constraints, betting hats, date reminders, timeouts, and you can mind-exception alternatives. Heidi’s Bier Haus, like all harbors, functions as a spin-dependent equipment with outcomes determined by haphazard count age group. Incentive cause probability stays unaffected because of the wager top, but monetary exposure expands. A trial variation reflects the same center technicians, paylines, and features because a bona-fide money video game, offered an agent aids it.<\/p>\n

The brand new insane symbol is actually one glass of alcohol that can change all others in order to create winning combos apart from the fresh new green yellow and you may yellow Heidi signs. There are lots of motif-related symbols and a pleasurable drinker (Hans), the newest club alone, a material stein, an accordion, a good trumpet, a classic hat and a good pretzel; playing cards symbols compensate the low beliefs. These may come from both personal Beastino offers and you may individually contained in this the video game, providing you with some control over what number of most rounds your discover. As you diving towards special rounds, you will find a realm of wilds, scatters, and you may unique symbols one boost your probability of profits. The brand new attract regarding Heidi Hunt goes beyond their standard game play; its extra have really bring the latest spotlight. The greatest group puller of your game rests to your its ideal-level 3d graphics that will give you twist the overall game getting occasions.<\/p>\n

Heidi In the Oktoberfest Position does not have any a progressive jackpot, nonetheless it makes up about because of it with enjoyable legs game mechanics, feature-manufactured rounds, and you may a reasonable RTP. Both the simple game play plus the large profits that may takes place regarding bonus cycles succeed a good choice for anybody who would like to enjoy and possibly victory loads of money. There are even random changes for the reels and you will entertaining front video game that occurs anytime and you will add a great element for the regular spin years.<\/p>\n

Anytime from the base video game or free spins, the fresh new Tapper normally randomly transfer 1\ufffd6 reels for the full nuts reels. Throughout the totally free spins, nuts Hans can appear at random, putting 4\ufffdten additional wilds over the reels. Heidi Seem is just about to give us larger potential earnings, a very long variety of provides and you may precious picture, so it is a great selection for lots of users. They resides in one to middle room in which you will notice repeated smaller gains, towards actual juices hiding regarding the bonus have as well as the advertised maximum payout as much as 5333xx your own bet. An arbitrarily brought about element you to pledges a victory out of that spin.<\/p>\n

Added bonus series, in addition to good tapper jackpot and you will totally free spins, are active. Possess combine to possess prompt-paced involvement as a consequence of layered technicians. This count reflects the fresh new requested return away from full bets over the years. Bettors twist using digital credits to check on mechanics, RTP models, add-to the triggers, and volatility shifts.<\/p>\n","protected":false},"excerpt":{"rendered":"

If you get four in a row together a payline, you are able to end in the brand new totally free revolves element It was put out in the , however it is however preferred for its solid reward auto mechanics and cross-program play. We appreciated the concept that all\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-122368","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122368","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=122368"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122368\/revisions"}],"predecessor-version":[{"id":122371,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122368\/revisions\/122371"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=122368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=122368"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=122368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}