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

When you get five in a row with each other an excellent payline, you’ll trigger the new 100 % free spins ability<\/h2>\n

It actually was put out for the , but it’s however popular for the solid reward technicians and you may cross-platform gamble. We preferred the idea that all the potential bonus have is actually connected from totally free spins games; this permits for a lot of assortment inside the play instead of complicating the newest screen with several unique signs. When you find yourself keen on game that blend fun templates having book forms and you may enjoyable bonus possess, you will Thrill<\/a> should gamble this slot. Any time you hit no less than five of those anywhere on the the newest display, you’ll earn yourself some free spins. Once again, it\ufffds a safe area for all of us to help you spark conversations and you may meet individuals without the common anxiety and you can stress out of societal configurations. I’ve a lot of 100 % free mahjong online game that will be greatly preferred certainly players, in addition to Mahjong Size, Mahjong Candy, and vintage Mahjong Solitaire.<\/p>\n

I’d rates the online game 4.0 out of 5, due to the Hd illustrations or photos and several added bonus features. The brand new RTP defines the latest payouts across the longterm, very users be prepared to circumvent $96 for each $100 gambled.<\/p>\n

Heidi’s Bier Haus slot’s graphics be consistent around the one another mobile and you will pc platforms<\/h2>\n

Along with its average volatility, Heidi Slot machine game was widely considered a famous options one of professionals. Having its wildly popular average-volatility slot, Heidi Casino slot games, you’ll end up transferred so you’re able to a lively Oktoberfest beer hallway, filled with 6?6 reels and you will sticky wilds that help keep you going back for more. The fresh nuts icon regarding the game is depicted of the alcohol toast and you may acts of course, replacement any signs but Heidi’s.<\/p>\n

However, the online game provides a wealthy variety of incentive has, ensuring that it is possible to continuously stumble on exciting special events that can potentially improve your profits. Whether you are waiting around for your day-to-day drive or leisurely on the favorite park, you have access to the latest lively realm of Heidi’s Bier Haus that have just faucet. In addition to this, you can even experience the excitement out of arbitrary wilds and you can icon transformations. Heidi’s Bier Haus requires satisfaction in its varied listing of extra features one to continue players thoroughly engrossed, spinning the brand new reels strong for the nights. Enjoy traditional slot mechanics that have modern twists and pleasing bonus rounds.<\/p>\n

Sign-up and create your 1st put off $10+ making use of the code STARS600 and you will located 100% Match so you can $five-hundred straight away! The greater amount of symbols are on the new display screen, more Totally free Spins you earn. The newest Free Spins icons performed are available many times into the 1 line even when, so it is entirely possible to discover the whole yard filled having Totally free Revolves icons. Other sound-consequences provided cheering and you may chanting people in the latest club also because the toasting of cups together. Most of the time there is no songs until there are totally free spins icons to your display. Heidi at the Oktoberfest lets us follow more youthful blonde Heidi while the she performs within Oktoberfest, helping large quantities of alcoholic beverages so you can an extravagant type of someone remembering that it German holiday!<\/p>\n

One of many secret web sites off online slots games is their entry to and you can assortment. Online slot games are in certain themes, between classic servers so you’re able to elaborate video clips harbors that have in depth image and you may storylines. It has got additional extra features in addition to a wheel bonus game where you could potentially profit one out of 4 jackpots. Bier Haus possess 2 scatter signs that may lead to 100 % free spins with a possiblity to retrigger doing 80 totally free revolves within the you to definitely go.<\/p>\n

It’s sweet to have newbie professionals, while the bonus have try straightforward and do not launch a completely the fresh video game regarding the extra round. The good news is, I’d a leading sufficient choice that people spins paid back. The overall game is additionally made to really works well into the quicker house windows that is offered at most safe cellular gambling enterprises, making it a perfect online game playing on the road. You will have the chance to profit larger, however when the latest 100 % free revolves initiate, you will not manage to improve your bet for every range.<\/p>\n

Devices usually become put limits, betting caps, time reminders, timeouts, and you will notice-exemption alternatives. Heidi’s Bier Haus, like all slots, serves as a spin-centered equipment that have consequences dependent on arbitrary count age group. Bonus bring about likelihood remains unaffected by the bet top, but monetary visibility develops. A demo type shows an identical key aspects, paylines, featuring since the a real currency games, given a driver supporting it.<\/p>\n

The latest crazy icon was one glass of beer which will exchange all others to make effective combos with the exception of the new eco-friendly red-colored and you can purple Heidi symbols. There are many motif-relevant signs and a happy drinker (Hans), the fresh new club itself, a material stein, an accordion, an effective trumpet, a traditional cap and you may a great pretzel; credit cards signs compensate the lower beliefs. These can are from one another personal Beastino promotions and myself within the online game, providing you with specific power over the amount of most rounds you found. Since you diving towards unique series, you will find a realm of wilds, scatters, and unique signs one to increase likelihood of triumph. The new charm regarding Heidi Search surpasses their fundamental gameplay; their incentive has it is need the newest limelight. The largest audience puller of game rests to the the greatest-notch 3d image that can give you spin the game getting days.<\/p>\n

Heidi During the Oktoberfest Position doesn’t have a modern jackpot, nonetheless it is the reason for it having enjoyable base game technicians, feature-manufactured series, and a good RTP. Both the simple gameplay plus the huge earnings that will happens on the added bonus rounds enable it to be helpful for people who would like to have some fun and perhaps winnings a lot of currency. There are also arbitrary changes to the reels and interactive top video game which can happen at any time and you can create a fun function towards typical spin period.<\/p>\n

Anytime from the ft games otherwise 100 % free revolves, the newest Tapper is randomly convert one\ufffd6 reels to the complete crazy reels. Throughout totally free spins, insane Hans can seem randomly, throwing four\ufffdten more wilds over the reels. Heidi Look is going to give us larger possible winnings, a very long set of have and you may pretty graphics, so it’s a great option for a lot of users. It lives in you to definitely middle area in which you will observe regular less gains, into the genuine fruit juice concealing regarding extra has plus the claimed max commission as high as 5333xx their choice. An arbitrarily caused element that claims an earn away from you to definitely twist.<\/p>\n

Bonus series, plus good tapper jackpot and you may 100 % free spins, are nevertheless productive. Have blend to own fast-paced wedding owing to layered technicians. Which amount reflects the brand new requested go back away from overall bets through the years. Gamblers twist playing with virtual credit to check on technicians, RTP patterns, add-towards causes, and volatility shifts.<\/p>\n","protected":false},"excerpt":{"rendered":"

When you get five in a row with each other an excellent payline, you’ll trigger the new 100 % free spins ability It actually was put out for the , but it’s however popular for the solid reward technicians and you may cross-platform gamble. We preferred the idea 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-117833","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117833","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=117833"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117833\/revisions"}],"predecessor-version":[{"id":117834,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/117833\/revisions\/117834"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=117833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=117833"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=117833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}