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

Should you get five consecutively together good payline, you are able to lead to the brand new 100 % free revolves ability<\/h2>\n

It actually was put-out for the , but it is nonetheless popular because of its good reward aspects and you can cross-platform enjoy. I appreciated the theory that all the possibility extra have are connected through the free spins games; this allows for many diversity for the enjoy instead of complicating the latest monitor that have numerous special signs. If you are keen on game one to merge fun themes that have unique forms and you can fun incentive have, then you’ll definitely need to play that it position. Should you decide struck at the very least four of them anywhere into the the latest monitor, you can secure yourself some 100 % free revolves. Once more, it is a safe area for all of us to help you spark talks and you can meet someone with no typical anxiety and you can stress regarding public settings. I’ve a great deal of 100 % free mahjong video game which can be hugely common certainly one of people, along with Mahjong Size, Mahjong Sweets, while the vintage Mahjong Solitaire.<\/p>\n

I would personally price the game four.0 off 5, simply because of its High definition artwork and some extra have. The fresh new RTP talks of the newest profits over the long-term, therefore players expect to bypass $96 for each $100 gambled.<\/p>\n

Heidi’s Bier Haus slot’s graphics remain consistent round the both mobile and desktop forms<\/h2>\n

With its average volatility, Heidi Slot machine game is commonly considered to be a greatest options among people. Along with its very prominent medium-volatility position, Heidi Slot machine game, you’re going to be transferred in order to an energetic Oktoberfest alcohol hall, including six?six reels and gluey wilds that help you stay returning to get more. The newest insane icon from the online game is actually portrayed from the alcohol toast and you may behaves as ever, substitution all other icons but Heidi’s.<\/p>\n

not, the video game has a rich assortment of bonus provides, ensuring that you’ll be able to frequently come upon exciting special events that will probably increase earnings. Whether you are looking forward to your day-to-day drive or relaxing on your favourite playground, you have access to the newest live realm of Heidi’s Bier Haus that have just tap. Besides this, you could have the thrill regarding arbitrary wilds and you can icon changes. Heidi’s Bier Haus takes pleasure within its diverse variety of incentive enjoys you to definitely remain participants carefully engrossed, rotating the newest reels deep to the nights. Appreciate antique position aspects having progressive twists and exciting added bonus rounds.<\/p>\n

Sign-up-and create your initially put away from $10+ utilizing the password STARS600 and you will receive 100% Complement to $five-hundred immediately! More symbols take the fresh new monitor, more Free Spins you have made. The brand new Free Spins signs did arrive multiple times into the one line even if, therefore it is entirely possible to discover the entire playing field filled having 100 % free Spins icons. Other voice-effects included cheering and you will chanting members of the brand new club as well while the toasting away from cups to one another. More often than not discover no sounds unless of course there are free revolves icons on the monitor. Heidi at Oktoberfest allows us to go after more youthful blonde Heidi as the she performs from the Oktoberfest, serving large degrees of liquor to help you a crazy line of somebody remembering it German getaway!<\/p>\n

Among the many trick internet of online slots games is the access to and you may diversity. On line position game are located in certain templates, ranging from classic machines so you’re able to specialized video harbors Slingo<\/a> which have detail by detail picture and you can storylines. It has got added additional features and a controls added bonus games where you might profit 1 regarding 4 jackpots. Bier Haus has 2 spread symbols that may bring about totally free revolves having a possibility to retrigger as much as 80 totally free revolves inside the you to go.<\/p>\n

It’s nice having inexperienced members, because bonus have was straightforward and don’t discharge a totally the fresh online game on added bonus bullet. The good news is, I got a premier adequate bet that those spins paid. The online game is additionally made to really works well to the quicker windows that is available at very safe mobile casinos, it is therefore a great video game playing away from home. You will have the chance to victory larger, however when the latest free revolves initiate, you won’t be able to improve your wager each line.<\/p>\n

Gadgets usually is put restrictions, wagering limits, big date reminders, timeouts, and you will mind-exemption alternatives. Heidi’s Bier Haus, like all ports, functions as a go-based unit with outcomes influenced by haphazard amount age group. Extra cause opportunities stays unchanged by the choice top, however, monetary visibility increases. A trial variation reflects an identical core aspects, paylines, featuring because a bona-fide currency games, offered an agent supports it.<\/p>\n

The fresh new wild symbol is actually one cup of beer that will replace others in order to create effective combinations with the exception of the new green reddish and you will red-colored Heidi symbols. There are many motif-related icons plus a happy drinker (Hans), the latest bar alone, a steel stein, an enthusiastic accordion, good trumpet, a traditional cap and a great pretzel; credit cards icons make up the reduced beliefs. These could are from one another personal Beastino campaigns and you may privately within the video game, giving you specific control of how many even more series you receive. Because you dive to the special series, there’ll be a realm of wilds, scatters, and you can unique icons you to definitely increase probability of profits. The latest charm out of Heidi Hunt exceeds the practical gameplay; the bonus have really capture the latest limelight. The greatest audience puller of one’s games sleeps for the their ideal-level 3d graphics that can make you spin the game to possess days.<\/p>\n

Heidi From the Oktoberfest Slot does not have any a modern jackpot, but it makes up about for this with fun foot online game auto mechanics, feature-manufactured series, and you can a reasonable RTP. Both easy gameplay while the big payouts which can happens on incentive cycles allow it to be a good choice for people who want to have a great time and perhaps profit a lot of currency. There are even haphazard transform into the reels and interactive front side video game that can occurs any time and put an enjoyable ability to the typical spin cycle.<\/p>\n

At any time regarding the ft games otherwise free spins, the latest Tapper can randomly convert 1\ufffdsix reels towards complete nuts reels. Throughout 100 % free revolves, crazy Hans can appear randomly, organizing 4\ufffdten additional wilds across the reels. Heidi Search is about to provide us with larger prospective winnings, a very long range of enjoys and cute graphics, making it a option for plenty of players. It resides in you to definitely center place where you will see regular smaller victories, to your actual liquid hiding regarding incentive possess and stated maximum commission as much as 5333xx your wager. A randomly caused function one pledges a win of one twist.<\/p>\n

Extra rounds, together with an effective tapper jackpot and you will totally free spins, will still be energetic. Have mix getting quick-paced wedding as a result of layered auto mechanics. Which matter reflects the brand new questioned return off complete wagers over time. Bettors twist playing with digital loans to test aspects, RTP patterns, add-to the triggers, in addition to volatility swings.<\/p>\n","protected":false},"excerpt":{"rendered":"

Should you get five consecutively together good payline, you are able to lead to the brand new 100 % free revolves ability It actually was put-out for the , but it is nonetheless popular because of its good reward aspects and you can cross-platform enjoy. I appreciated the theory that\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-111229","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111229","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=111229"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111229\/revisions"}],"predecessor-version":[{"id":111232,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111229\/revisions\/111232"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=111229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=111229"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=111229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}