/* 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":143133,"date":"2026-06-12T10:18:54","date_gmt":"2026-06-12T10:18:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=143133"},"modified":"2026-06-12T10:18:54","modified_gmt":"2026-06-12T10:18:54","slug":"das-spirit-casino-die-plattform-die-oesterreichische-spieler-stets-an-erste-stelle-stellt","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/das-spirit-casino-die-plattform-die-oesterreichische-spieler-stets-an-erste-stelle-stellt\/","title":{"rendered":"Das Spirit Casino: Die Plattform, die \u00f6sterreichische Spieler stets an erste Stelle stellt"},"content":{"rendered":"
\u00d6sterreichische Spieler haben konkrete Vorstellungen. Sie wollen einem Casino glauben k\u00f6nnen, Abwechslung erleben und sich gut aufgehoben f\u00fchlen. Spirit Casino scheint diese Erwartungen zu verstehen. Die Plattform erscheint nicht wie eine beliebige internationale Seite mit \u00f6sterreichischer Domain. Vielmehr verr\u00e4t sie echtes Gesp\u00fcr f\u00fcr den lokalen Markt, die gesetzlichen Besonderheiten und die Spielgewohnheiten, die hier bedeutsam sind.<\/p>\n
Bequem ist ein Casino dann immer, wenn Transaktionen schnell \u00fcber vertraute Wege ablaufen. Spirit Casino stellt genau das. Neben internationalen Kreditkarten und E-Wallets wie Skrill und Neteller warten lokale Favoriten bereit. Dazu geh\u00f6ren Sofort\u00fcberweisung (Klarna) und giropay. Dass jene Methoden zur Verf\u00fcgung stehen, zeigt: Die Zahlungsabwicklung ist auf die Bed\u00fcrfnisse in \u00d6sterreich zugeschnitten.<\/p>\n
Die Bearbeitungszeiten sind wettbewerbsf\u00e4hig. Die Limits sind angemessen sowohl f\u00fcr Casual-Spieler als auch f\u00fcr High Roller. Besonders stark positiv ist die deutliche Kommunikation auf. Bearbeitungsdauern und eventuelle Geb\u00fchren werden transparent gemacht. Diese Offenheit verhindert b\u00f6se \u00dcberraschungen. Sie unterstreicht den kundenfreundlichen Ansatz, bei dem versteckte Kosten nicht vorkommen.<\/p>\n
Die Spielekollektion von Spirit Casino deckt den Geschmack einheimischer Casino-Fans. Selbstverst\u00e4ndlich gibt es eine umfangreiche Auswahl internationaler Slots von Anbietern wie NetEnt und Pragmatic Play. Der spezielle Fokus liegt aber auf Spielen, die in der DACH-Region beliebt sind. Das \u00e4u\u00dfert sich an einer hohen Pr\u00e4senz bew\u00e4hrter Tischspiele wie Roulette und Blackjack in vielen Varianten, die den lokalen Regeln folgen.<\/p>\n
Das Live-Casino verdient spezielle Erw\u00e4hnung. Heimische Spieler finden hier nicht nur die \u00fcblichen internationalen Tische. Oft sitzen dort deutschsprachige Dealer, und die Limits sind auf das regionale Spielverhalten abgestimmt. Die Auswahl erscheint durchdacht, nicht zuf\u00e4llig zusammengew\u00fcrfelt. Das demonstriert Verst\u00e4ndnis f\u00fcr den lokalen Markt. Man hat das Gef\u00fchl, die Spiele wurden tats\u00e4chlich f\u00fcr diese Spieler zusammengestellt.<\/p>\n
Exzellenter Kundenservice stellt den entscheidenden Faktor. Bei Spirit Casino nutzen Spieler einen mehrsprachigen Support, selbstverst\u00e4ndlich auf Deutsch, per Live-Chat und E-Mail. Unsere Tests best\u00e4tigen: Die Antwortzeiten im Chat sind kurz. Die Mitarbeiter handeln professionell und suchen aktiv nach M\u00f6glichkeiten. Sie kennen sich aus nicht nur mit technischen Problemen, sondern auch mit besonderen Themen, die einheimische Spieler betreffen.<\/p>\n
Dieses Verst\u00e4ndnis geht \u00fcber reine Sprachkenntnisse hinaus. Die Mitarbeiter k\u00f6nnen sachkundig zu steuerrechtlichen Aspekten, regionalen Zahlungsmethoden oder Spielvorlieben informieren. Eine umfangreiche FAQ-Sektion auf Deutsch bietet oft die erste Antwort. Dieser Service wirkt nicht wie ein unbekannter Dienstleister. Er f\u00fchlt sich an wie ein wesentlicher Bestandteil des Versprechens, den Spieler in den Mittelpunkt zu setzen.<\/p>\n
Korrekt. Spirit Casino verf\u00fcgt \u00fcber eine vollst\u00e4ndige Lizenz der Malta Gaming Authority (MGA). Diese Beh\u00f6rde besitzt weltweit einen sehr guten Ruf. Die Lizenz garantiert faire Spiele, sichere Transaktionen durch SSL-Verschl\u00fcsselung, den die Wahrung pers\u00f6nlicher Daten und die Befolgung strenger Regeln f\u00fcr verantwortungsvolles Spielen. F\u00fcr \u00f6sterreichische Spieler ist es damit eine rechtm\u00e4\u00dfige und seri\u00f6se Wahl.<\/p>\n
Spirit Casino bietet eine Reihe in \u00d6sterreich beliebter Zahlungswege zur Verf\u00fcgung. Dazu geh\u00f6ren Kreditkarten (Visa\/Mastercard), E-Wallets wie Skrill und Neteller sowie spezielle lokale Optionen. Letztere handelt es sich um Sofort\u00fcberweisung (Klarna) und giropay. Alle Transaktionen sind verschl\u00fcsselt. Die Plattform kl\u00e4rt klar \u00fcber Limits, Bearbeitungszeiten und eventuelle Geb\u00fchren.<\/p>\n
Ja, das ist der Fall. Neue Spieler bekommen ein attraktives Willkommensbonuspaket. H\u00e4ufig enth\u00e4lt es einen Match-Bonus auf die erste Einzahlung und eine gewisse Zahl Freispiele. Die Umsatzbedingungen und die Beitragss\u00e4tze der Spiele sind klar dargestellt. Sie bewegen sich im fairen, branchen\u00fcblichen Rahmen. Unsere Empfehlung: Lesen Sie die Bonusbedingungen vor der Annahme jeweils genau durch.<\/p>\n
Das Live-Casino von Spirit Casino wird von Top-Studios wie Evolution betrieben. Das Streaming ist von hoher Qualit\u00e4t, die Dealer professionell. Das Angebot schlie\u00dft ein gefragte Spiele wie Roulette, Blackjack und Baccarat. Ein bedeutender Pluspunkt f\u00fcr \u00f6sterreichische Spieler sind Tische mit deutschsprachigen Dealern und Limits, die auf den Markt angepasst sind.<\/p>\n