/* 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":193491,"date":"2026-06-22T17:57:30","date_gmt":"2026-06-22T17:57:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=193491"},"modified":"2026-06-22T17:57:31","modified_gmt":"2026-06-22T17:57:31","slug":"so-kannst-du-slots-auf-zuhilfenahme-von-three-bugeln-kostenlos-spielen-2","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/so-kannst-du-slots-auf-zuhilfenahme-von-three-bugeln-kostenlos-spielen-2\/","title":{"rendered":"So kannst du Slots auf zuhilfenahme von three Bugeln kostenlos spielen"},"content":{"rendered":"

4 Platten Slots: Zugelassen in Deutschland gemeinsam spielen<\/h2>\n

Diese https:\/\/winspirit-germany.net\/bonus\/<\/a> 2 Glatten Slots gultigkeit haben als traditionellste Gerust ein Spielautomaten. Praktisch gehen diese Ursprunge das Automatenspiele auf diese Name \u00fcber nur drei Mangeln zuruck. Wir prasentieren dir diese besten 2 Bugeln Spielautomaten und angebot dir diese vergutungsfrei als Zur\u00fcckweisung & inoffizieller mitarbeiter Runde \u00fcber Echtgeld angeschaltet.<\/p>\n

Three times Three-way Moglichkeit<\/h2>\n

\u00dcber Triple Three-way Moglichkeit setzt Merkur eine erfolgreiche Reihe in Slots \u00fcber drei Mangeln weiter. Aufwarts anderen siehst du einige Fruchte wie Muschi, Buste und Orangen. Erzielst du auf allen Positionen das drei Glatten das gleiche Zeichen, startest du das Respin-Abschluss. Im vergleich zu seinen Vorgangern angeordnet diese Veranderung neun Respin-Felder, wobei diese Gewinne stupend ansteigen fahig sein. Accessories wie diese beliebte Merkur Risikoleiter stehen dir inoffizieller mitarbeiter gleichen sinne zur Verfugung.<\/p>\n

Have 2<\/h2>\n

\u00dcber Have 5 entomat. Viele Spieler aus Deutschland kennen einen Name aus einen Casinos in gro?en Stadten. Du spielst in drei Mangeln und uber Symbolen wie Auswirken, Glocken & Sternen. Fullst du diese Mangeln auf einsatz von identischen Symbolen, lost du einen Respin-Ausloser aus. Deinen erzielten Erfolg kannst du so bis zu viermal noch einmal erwerben.<\/p>\n

Fire Platzhalter<\/h2>\n

Einen das begehrtesten four Mangeln Erreichbar Slots aller Zeiten hat Play’n Get \u00fcber Fire Platzhalter steht. Du spielst aufwarts drei Bugeln \u00fcber funf Reihen, auf denen speziell ein lachende Platzhalter f\u00fcr Unterhaltung sorgt. Der ersetzt ja Wild-Zeichen fehlende Gewinnsymbole aufwarts ein Strecke. Erzielst du ein Vollbild identischer Symbole, lost du das Respin-Win-Abschluss aus und kannst deinen Erfolg um es bis zu Zehnfache aufzahlen. Pr\u00e4sentieren zwei Mangeln identische Symbole, ist ein klassischer Respin durchgefuhrt. \u00dcber diesem hast du diese Moglichkeit, diese fehlenden Symbole nach erg\u00e4nzen.<\/p>\n

Charlie Chance in Klar towards Spend<\/h2>\n

Begleite einen kinder Charlottenburger uber Charlie Moglichkeit in Tats\u00e4chlich towards Cover in diese Qual. Hier warten leckere Fruchte in einen Mangeln, nachtr\u00e4glich versuchen hei?e Gewinne. Drei Scatter aufwarts einen Mangeln l\u00f6sen das Abschluss Motherboard ganz, irgendwo ausgewahlte Belohnungen aufwarts dich warten. Du kannst sowie einen Sofortgewinn pushen als auch Respins auf einsatz von bis zu 25-fachen Multiplikatoren fuhren. Wild-Respins, klassische Freespins und Spielrunden \u00fcber dem garantierten Erfolg sind ebenfalls erhaltlich. Kaum das anderer Drei-Walzen-Slot bietet so sehr viele Features.<\/p>\n

Sonder Scorching Deluxe<\/h2>\n

Ein traditionsreicher Klassiker \u00fcber drei Verwundert machen und funf Reihen. Einzig Heated Deluxe ist as part of deutschen Casinos respektiert & umsetzbar sehr nicht vor 0,05 \ufffd nach handen Runde spielbar. Diese Platten sind voll uber verschiedenen Auswirken, dem Lokal-Zeichen, Sternen und ein eight. Diese Andere: Erzielst du ein Vollbild identischer Symbole auf allen drei Mangeln, ist ein Erfolg verdoppelt.<\/p>\n

Was sind 4 Mangeln Slots?<\/h2>\n

Ein four Mangeln Slot ist ein Spielautomat, dessen Runde in jedoch drei Verwundert machen basiert. Diese einzelnen Mangeln pr\u00e4sentieren Symbole angeschaltet, diese \u00fcber einen Erfolg in der Spielrunde farbe bekennen. Belegt sind diese Mangeln auf zuhilfenahme von ein variablen Reihe angeschaltet Gewinnlinien, diese insgesamt zwischen der und funf Linien liegt. Viele Spielautomaten \u00fcber three Platten sie sind unseren Erfahrungen wie ordinar vermittelt. Du findest hier haufig kaum Freispiele & jedoch mehrere Properties. Gleichzeitig uberlassen sich diese Spiele h\u00e4ufig klassischen Casino Themen und beherbergen Obst- und Lokal-Symbole.<\/p>\n

Diese 5 Platten Spielautomaten auf einen fu?en stehen dir gebuhrenfrei in ein Demo zur Verf\u00fcgung. Diese Demoversion spielst du abzuglich Anwendung von Echtgeld \u00fcber diesem Anwendung des virtuellen Spielguthabens. Geht dir dieses Zahlungsmittel verloren, startest du diese Demo neu und erhaltst eine unverbrauchtheit Fullung Gutschrift. Echte Gewinne und Verluste sind \u00fcber ein Demoversion nicht denkbar. Diese eignet sich in unseren Augen vollkommen zum Versuchen ein Spiele. Mochtest du mehr Abenteuer haben, helfen dir Freispiele und das Vermittlungsgebuhr ohne Einzahlung weiter. Diese Bonusgeld und diese Freespins kannst du f\u00fcr einen Anwendung in einen Slots verwenden. So spielst du gebuhrenfrei, hast zwar diese Chance auf echte Geldgewinne.<\/p>\n","protected":false},"excerpt":{"rendered":"

4 Platten Slots: Zugelassen in Deutschland gemeinsam spielen Diese https:\/\/winspirit-germany.net\/bonus\/ 2 Glatten Slots gultigkeit haben als traditionellste Gerust ein Spielautomaten. Praktisch gehen diese Ursprunge das Automatenspiele auf diese Name \u00fcber nur drei Mangeln zuruck. Wir prasentieren dir diese besten 2 Bugeln Spielautomaten und angebot dir diese vergutungsfrei als Zur\u00fcckweisung &\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-193491","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193491","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=193491"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193491\/revisions"}],"predecessor-version":[{"id":193492,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/193491\/revisions\/193492"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=193491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=193491"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=193491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}