/* 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":130240,"date":"2026-05-25T13:32:22","date_gmt":"2026-05-25T13:32:22","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=130240"},"modified":"2026-05-25T13:32:26","modified_gmt":"2026-05-25T13:32:26","slug":"heidis-bier-haus-position-is-pleasant-having-its-steeped-picture-and-you-can-quality-soundscape","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/heidis-bier-haus-position-is-pleasant-having-its-steeped-picture-and-you-can-quality-soundscape\/","title":{"rendered":"Heidi’s Bier Haus position is pleasant having its steeped picture and you can quality soundscape"},"content":{"rendered":"

If you get five in a row along an effective payline, you can easily result in the latest totally free revolves ability<\/h2>\n

It actually was create inside , however it is nonetheless popular for the solid prize technicians and you may cross-platform enjoy. We enjoyed the concept that all the possibility bonus enjoys is linked from the totally free revolves games; this permits for a number of variety in the play as opposed to complicating the fresh display that have numerous special symbols. When you are a fan of video game you to definitely mix enjoyable themes which have book forms and you may fun bonus has, you will must gamble so it position. If you hit about five of those everywhere towards the brand new screen, you’ll be able to earn some totally free spins. Once more, it’s a secure room for all those to spark talks and you can meet individuals with no typical nervousness and you can tension off personal configurations. I have many 100 % free mahjong game which might be very preferred certainly people, along with Mahjong Proportions, Mahjong Chocolate, and the vintage Mahjong Solitaire.<\/p>\n

I would rates the game four.0 of 5, simply because of its Hd graphics and several bonus enjoys. The newest RTP talks of the latest payouts along the long term, very professionals expect to bypass $96 for each and every $100 gambled.<\/p>\n

Heidi’s Bier Haus slot’s graphics be consistent round the each other mobile and desktop computer formats<\/h2>\n

Featuring its medium volatility, Heidi Slot machine are generally considered to be a famous choices one of members. With its significantly preferred typical-volatility position, Heidi Slot machine, you’re going to be transferred to an energetic Oktoberfest beer hallway, complete with six?six reels and you will gluey wilds that will keep you coming back for much more. The brand new nuts symbol on the video game try depicted by the beer toast and acts as always, substitution some other icons except Heidi’s.<\/p>\n

Yet not, the overall game have an abundant variety of added bonus features, ensuring that it is possible to continuously run into fascinating special occasions which can possibly improve your profits. Whether you are waiting around for your everyday drive or leisurely on your own favorite park, you can access the brand new live field of Heidi’s Bier Haus having only tap. Besides this, you’ll be able to have the excitement from arbitrary wilds and you may icon changes. Heidi’s Bier Haus takes pleasure in its diverse directory of added bonus provides you to definitely remain professionals thoroughly involved with it, spinning the new reels deep towards nights. Appreciate traditional slot technicians with modern twists and fascinating incentive rounds.<\/p>\n

Sign-up-and create your 1st put from $10+ with the code STARS600 and receive 100% Complement to help you $500 right away! The greater number of icons are on the fresh screen, the more 100 % free Revolves you get. The fresh Totally free Spins signs did appear many times to the 1 line even when, it is therefore fairly easy to get the entire play ground occupied having Totally free Spins signs. Other voice-outcomes included cheering and you can chanting members of the newest club as well while the toasting away from glasses to one another. More often than not discover zero tunes unless of course there have been free spins icons towards screen. Heidi at Oktoberfest lets us realize more youthful blonde Heidi since she work in the Oktoberfest, offering copious levels of alcoholic beverages to an extravagant collection of people honoring which Italian language vacation!<\/p>\n

Among trick web sites away from online slots games is the the means to access and you may diversity. Online slot game have been in certain templates, ranging from vintage computers to help you involved videos ports which have in depth image and you will https:\/\/slotshammercasino-fi.com\/fi-fi\/<\/a> storylines. It’s got additional additional enjoys in addition to a controls bonus games where you might profit 1 regarding four jackpots. Bier Haus provides 2 spread out symbols that may end in free spins having a possiblity to retrigger doing 80 free revolves within the you to definitely wade.<\/p>\n

It’s nice getting beginner professionals, because incentive provides try straightforward and do not launch a totally the brand new online game on extra round. Thankfully, I experienced a high enough choice that those spins paid back. The overall game is additionally created to functions well to your faster windowpanes which can be available at very safe cellular casinos, it is therefore a great video game to tackle away from home. You will have the ability to winnings big, but when the newest free revolves begin, you may not manage to alter your wager for every range.<\/p>\n

Systems normally include deposit limits, wagering caps, go out reminders, timeouts, and you may thinking-difference choice. Heidi’s Bier Haus, like all ports, functions as a spin-centered equipment having consequences determined by haphazard number age bracket. Bonus trigger probability stays unaffected of the wager peak, but monetary visibility grows. A demonstration adaptation shows an identical key technicians, paylines, featuring since a bona fide money game, offered an user aids it.<\/p>\n

The newest insane icon is actually one glass of beer that can change all others to create successful combinations apart from the latest environmentally friendly red and you will reddish Heidi signs. There are many theme-associated signs along with a happy drinker (Hans), the new club by itself, a steel stein, an enthusiastic accordion, a great trumpet, a classic hat and a good pretzel; credit cards signs compensate the low viewpoints. These could are from each other exclusive Beastino offers and personally contained in this the video game, providing specific control of how many extra cycles your located. Since you dive on the unique cycles, you will have a world of wilds, scatters, and you can novel symbols you to increase chances of victory. The new allure off Heidi Appear surpasses its important game play; its bonus have truly take the fresh new spotlight. The biggest group puller of your own game rests towards its best-notch 3d image that may give you spin the online game getting times.<\/p>\n

Heidi At Oktoberfest Slot doesn’t have a progressive jackpot, however it makes up about for this with fun legs games technicians, feature-manufactured series, and you will a fair RTP. Both the easy gameplay as well as the huge payouts that will happen regarding the incentive series enable it to be a good choice for individuals who wish to have some fun and maybe winnings plenty of currency. There are even arbitrary transform for the reels and you can entertaining top games that will happen at any time and you can put a fun ability on the regular twist duration.<\/p>\n

Anytime regarding the legs games or 100 % free spins, the fresh Tapper is at random move 1\ufffd6 reels to your full wild reels. Through the totally free spins, nuts Hans can appear at random, tossing 4\ufffd10 most wilds over the reels. Heidi Seem is going to give us big prospective earnings, a very long listing of features and you will sweet picture, making it a good option for loads of participants. It resides in that center area where you will notice frequent reduced wins, to your genuine juice concealing on the bonus has and also the reported max payment all the way to 5333xx the wager. A randomly brought about element one to claims a winnings from that twist.<\/p>\n

Extra cycles, as well as a good tapper jackpot and you can totally free spins, will still be effective. Features blend to own fast-paced wedding owing to superimposed aspects. Which count reflects the new requested get back of total wagers throughout the years. Gamblers spin playing with virtual credit to check mechanics, RTP models, add-towards trigger, as well as volatility shifts.<\/p>\n","protected":false},"excerpt":{"rendered":"

If you get five in a row along an effective payline, you can easily result in the latest totally free revolves ability It actually was create inside , however it is nonetheless popular for the solid prize technicians and you may cross-platform enjoy. We enjoyed the concept that all the\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-130240","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/130240","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=130240"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/130240\/revisions"}],"predecessor-version":[{"id":130268,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/130240\/revisions\/130268"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=130240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=130240"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=130240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}