/* 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":143349,"date":"2026-06-12T10:22:54","date_gmt":"2026-06-12T10:22:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=143349"},"modified":"2026-06-12T10:22:54","modified_gmt":"2026-06-12T10:22:54","slug":"skyhills-casino-zocken-sie-reibungslos-auf-allen-geraeten-in-deutschland","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/skyhills-casino-zocken-sie-reibungslos-auf-allen-geraeten-in-deutschland\/","title":{"rendered":"Skyhills Casino \u2013 Zocken Sie reibungslos auf allen Ger\u00e4ten in Deutschland"},"content":{"rendered":"
\n

Ich teste immer wieder neue Online-Casinos https:\/\/sky-hillscasino.com\/de-de\/<\/a>. Skyhills Casino hat mich auf Anhieb begeistert, weil es problemlos auf jedem Ger\u00e4t funktioniert. F\u00fcr deutsche Spieler, die Anpassungsf\u00e4higkeit und hohe Performance m\u00f6chten, ist es ein richtiger Gl\u00fccksgriff. Ich erkl\u00e4re dir, warum diese Plattform den Ton angibt, ob du nun am PC, Smartphone oder Tablet zockst.<\/p>\n

Sicherheit und Lizenz: Gesichert auf s\u00e4mtlichen Endger\u00e4t<\/h2>\n

F\u00fcr Skyhills Casino hat Sicherheit allerh\u00f6chste Priorit\u00e4t, und das gilt f\u00fcr s\u00e4mtliche genutzte Ger\u00e4t. Die Plattform arbeitet unter einer g\u00fcltigen Gl\u00fccksspiellizenz (z.B. MGA oder Curacao), die klare Regeln vorschreibt. Alle Daten\u00fcbertragungen werden durch eine 256-Bit SSL-Verschl\u00fcsselung abgesichert. Das sehe ich an dem kleinen Schloss-Symbol in meiner Browserzeile, unabh\u00e4ngig ob auf dem Handy oder PC.<\/p>\n

Die Zahlungsverbindungen sind ebenso sicher, und pers\u00f6nliche Daten werden nicht preisgegeben. Diese umfassende Sicherheitsarchitektur gibt mir das Zutrauen, mich ganz auf den Spielspa\u00df einstellen zu k\u00f6nnen. Skyhills setzt hier deutliche Standards und behandelt Sicherheit nicht als Beiwerk, sondern als Fundament.<\/p>\n

Eine neue \u00c4ra des mobilen Spielens in Deutschland<\/h2>\n

Die Zeit, in der man f\u00fcr Casino-Spiele am Schreibtisch gefesselt war, ist lange vorbei. Skyhills Casino repr\u00e4sentiert genau f\u00fcr diese mobile Wende. Ich zocke auf meinem Smartphone ebenso gut wie auf meinem riesigen Desktop-Bildschirm. Der \u00dcbergang zwischen den Ger\u00e4ten ist derart unkompliziert, dass ich nie meinen Spielstand oder einen Bonus einb\u00fc\u00dfe. Das ver\u00e4ndert alles.<\/p>\n

F\u00fcr die deutsche Spielgemeinschaft ist diese Mobilit\u00e4t ein bedeutender Gewinn. In der U-Bahn, in der Mittagspause oder gem\u00fctlich auf dem Sofa \u2013 Skyhills ist stets zur Hand. Die Plattform wurde genau f\u00fcr diese Unabh\u00e4ngigkeit entwickelt. Man merkt das bei jeder Aktion, und das gestaltet das Spielen zeitgem\u00e4\u00df und simpel.<\/p>\n

Geldeing\u00e4nge & Auszahlungen: Z\u00fcgig und ger\u00e4te\u00fcbergreifend<\/h2>\n

Das Zahlungsmanagement bei Skyhills ist so flexibel wie das Gaming selbst. Ich kann eine Geldeinzahlung bequem auf meinem Laptop t\u00e4tigen und die Ertr\u00e4ge sp\u00e4ter auf meinem Smartphone auszahlen lassen. Der Prozess ist benutzerfreundlich und auf allen Ger\u00e4ten optimal dargestellt. Die Auswahlm\u00f6glichkeiten an Zahlungsmethoden passt perfekt zu Deutschland.<\/p>\n

Ob Sofort\u00fcberweisung, Giropay, Trustly, Kreditkarte oder E-Wallets wie Skrill \u2013 alles ist realisierbar. Die Zahlungen werden rasch bearbeitet, was ich aus eigener Erfahrung best\u00e4tigen kann. Diese glatte Integration des Bankings in die mobile Erfahrung macht den Dienst rund und angenehm zu nutzen.<\/p>\n

Die technische Brillanz hinter der Ger\u00e4tevertr\u00e4glichkeit<\/h2>\n

Wie funktioniert das technisch? Skyhills vertraut auf eine raffinierte, responsive Web-Technologie. Das bedeutet, ich brauche keine schwerf\u00e4lligen Apps einrichten, die nur Kapazit\u00e4t wegnehmen. Ich \u00f6ffne einfach die Website im Browser, und sie stellt sich von alleine an jeden Bildschirm optimal. Sogar aufwendige Spielautomaten werden geladen blitzschnell.<\/p>\n

Die Entwickler haben mit f\u00fchrenden Softwareanbietern kooperiert, um eine gemeinsame Basis zu entwickeln. Egal, ob ich einen NetEnt-Slot oder ein Evolution Live-Dealer-Spiel aufrufe, die Leistung ist stets auf einem erstklassigen Niveau. Diese technische Infrastruktur ist das Fundament, das f\u00fcr ein fl\u00fcssiges und ehrliches Spielerlebnis auf allen Ger\u00e4ten verantwortlich ist.<\/p>\n

Spielebibliothek: Tausende Optionen f\u00fcr dein Ger\u00e4t parat<\/h2>\n

Die umfangreiche Spielesammlung von Skyhills ist auf s\u00e4mtlichen Ger\u00e4ten komplett nutzbar und angepasst. Ich habe Zugriff auf Tausende Slots, Tischspiele und Live-Casino-Titel, ohne die Auswahl auf dem Smartphone schrumpfen w\u00fcrde. Die Filterfunktionen sind auch bei kompakten Bildschirmen einfach nutzbar, damit rasch mein Lieblingsspiel zu finden. Die Auswahl ist riesig.<\/p>\n

Von klassischen Spielautomaten bis zu modernen Megaways-Slots, \u00fcber Blackjack bis zum Roulette \u2013 alles startet sofort und reibungslos. Selbst die hochaufl\u00f6senden Live-Dealer-Streams von Anbietern wie Evolution oder Pragmatic Play Live sind auf meinem Mobilger\u00e4t brillant und ohne Latenz zu sehen. Diese gleichbleibende Qualit\u00e4t in der gesamten Sammlung hinweg ist bemerkenswert.<\/p>\n

Optimiert f\u00fcr iOS, Android & Windows: Dein Endger\u00e4t, deine Entscheidung<\/h2>\n

Skyhills Casino bietet bei der Ger\u00e4teunterst\u00fctzung volle Leistung. Ich konnte es ausgiebig auf meinem iPhone, einem Android-Tablet und einem Windows-Laptop getestet. Das Ergebnis war durchweg \u00fcberzeugend. Die Steuerung arbeitet auf dem Touchscreen genauso genau an wie mit Maus und Tastatur. Die Oberfl\u00e4che skaliert einwandfrei und bleibt \u00fcbersichtlich.<\/p>\n