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

When you get five consecutively with each other good payline, you’ll end in the brand new 100 % free spins ability<\/h2>\n

It actually was put-out inside , however it is however well-known for the good prize mechanics and cross-program gamble. We preferred the idea that all of the possibility extra possess are linked from free revolves games; this enables for a lot of assortment during the play in place of complicating the newest monitor which have numerous unique symbols. While you are a fan of online game one to combine enjoyable templates having unique formats and enjoyable extra enjoys, then you’ll definitely have to play which position. Should you struck at the very least four ones anyplace to your the latest screen, you can secure yourself some 100 % free spins. Again, it\ufffds a safe space for all of us to help you spark discussions and see people with no common stress and you may pressure out of public configurations. You will find numerous free mahjong games which can be very preferred one of players, as well as Mahjong Proportions, Mahjong Candy, and vintage Mahjong Solitaire.<\/p>\n

I’d price the video slot planet casino online<\/a> game 4.0 off 5, simply because of its Hd illustrations or photos and several bonus possess. The brand new RTP defines the brand new earnings along the long haul, thus professionals expect you’ll circumvent $96 per $100 gambled.<\/p>\n

Heidi’s Bier Haus slot’s image remain consistent all over one another mobile and desktop platforms<\/h2>\n

Featuring its medium volatility, Heidi Slot machine was widely thought to be a well-known possibilities among people. With its very popular average-volatility slot, Heidi Slot machine, you’ll be transported so you’re able to a lively Oktoberfest alcohol hall, including 6?six reels and gluey wilds that will help keep you coming back for lots more. The latest wild symbol in the online game is portrayed from the beer toast and you may acts as usual, substitution every other signs but Heidi’s.<\/p>\n

But not, the video game have a rich assortment of bonus provides, making sure you’ll daily come across thrilling special occasions that will probably boost your profits. Regardless if you are waiting for your everyday travel otherwise leisurely on your favourite playground, you have access to the new alive realm of Heidi’s Bier Haus with a mere faucet. In addition to this, you can even experience the thrill away from random wilds and symbol transformations. Heidi’s Bier Haus requires satisfaction in its diverse list of added bonus enjoys that keep players thoroughly involved with it, rotating the brand new reels strong to your night. See traditional slot technicians that have progressive twists and exciting added bonus cycles.<\/p>\n

Sign-up and build your initially deposit away from $10+ utilising the password STARS600 and you will receive 100% Match to help you $five-hundred instantly! The greater amount of symbols are on the fresh display, the greater amount of Free Spins you earn. The fresh Totally free Spins symbols performed are available multiple times for the 1 row even though, therefore it is fairly easy to get the whole playing field occupied which have Totally free Revolves signs. Other voice-outcomes provided cheering and you may chanting members of the latest pub too since the toasting from mugs to one another. In most cases you will find zero music unless there have been free spins signs for the display screen. Heidi during the Oktoberfest allows us to go after more youthful blonde Heidi while the she works within Oktoberfest, helping large quantities of alcoholic drinks to help you an extravagant collection of anybody honoring so it Italian language getaway!<\/p>\n

One of the secret sites off online slots games is their use of and diversity. On the internet position games are in various layouts, ranging from classic hosts so you’re able to specialized video clips slots with detailed graphics and you may storylines. It’s got added a lot more have together with a controls added bonus video game where you could winnings one from four jackpots. Bier Haus provides 2 spread signs which can result in free revolves having a possiblity to retrigger doing 80 totally free spins inside you to definitely wade.<\/p>\n

It’s nice to have inexperienced players, because extra have is actually quick and do not release an entirely the brand new games from the incentive round. Fortunately, I experienced a top adequate bet that those revolves paid down. The overall game is also developed to work really well on the smaller house windows which can be offered at extremely safe mobile gambling enterprises, so it’s a fantastic online game playing away from home. You’ll have the opportunity to earn larger, but once the new 100 % free spins begin, you will not be able to alter your choice for each line.<\/p>\n

Products usually include deposit constraints, wagering limits, day reminders, timeouts, and you may notice-difference choices. Heidi’s Bier Haus, like all ports, serves as a chance-based tool with consequences determined by arbitrary matter age bracket. Incentive trigger chances remains unaffected from the choice top, but financial coverage expands. A trial adaptation reflects a similar key mechanics, paylines, and features because a real money online game, considering an agent supporting they.<\/p>\n

The brand new nuts icon try one cup of alcohol that’ll change others to form profitable combos with the exception of the newest environmentally friendly reddish and you can purple Heidi symbols. There are lots of motif-associated icons along with a pleasurable drinker (Hans), the newest pub by itself, a steel stein, a keen accordion, a good trumpet, a classic cap and you may good pretzel; playing cards signs make up the reduced beliefs. These could come from each other exclusive Beastino campaigns and you can actually within this the overall game, providing certain control of how many even more cycles your discovered. Since you plunge on the special series, you will see a world of wilds, scatters, and you can novel symbols one to boost your likelihood of victory. The fresh new impress from Heidi Look exceeds its standard gameplay; their incentive have it is bring the new limelight. The most significant crowd puller of the games sleeps for the their greatest-notch three dimensional image that may give you spin the online game to possess days.<\/p>\n

Heidi At the Oktoberfest Position doesn’t have a progressive jackpot, it is the reason because of it with fun foot video game auto mechanics, feature-packed series, and you can a good RTP. Both the easy gameplay and the huge earnings that may takes place regarding the bonus rounds make it a good choice for anybody who want to have a great time and maybe profit a good amount of currency. There are also arbitrary change to your reels and you may interactive side video game that can happens any moment and you may add an enjoyable element into the typical spin course.<\/p>\n

At any time regarding the ft video game otherwise 100 % free revolves, the fresh new Tapper can also be randomly convert one\ufffdsix reels on the complete crazy reels. While in the free revolves, nuts Hans can seem to be at random, putting 4\ufffdten extra wilds along the reels. Heidi Check is about to give us large possible payouts, a very long directory of have and you can cute image, making it good choice for a good amount of users. It resides in you to middle room where you will see regular reduced gains, on the real juices hiding from the bonus have while the stated max payout as high as 5333xx your wager. An arbitrarily caused feature one to pledges an earn of one spin.<\/p>\n

Added bonus rounds, in addition to a tapper jackpot and 100 % free revolves, will still be effective. Provides mix to own fast-moving wedding because of layered mechanics. This count shows the fresh requested come back away from overall bets through the years. Gamblers spin having fun with virtual loans to test technicians, RTP designs, add-towards produces, together with volatility swings.<\/p>\n","protected":false},"excerpt":{"rendered":"

When you get five consecutively with each other good payline, you’ll end in the brand new 100 % free spins ability It actually was put-out inside , however it is however well-known for the good prize mechanics and cross-program gamble. We preferred the idea that all of the possibility extra\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-105116","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105116","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=105116"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105116\/revisions"}],"predecessor-version":[{"id":105120,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/105116\/revisions\/105120"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=105116"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=105116"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=105116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}