/* 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":69420,"date":"2026-05-22T18:20:26","date_gmt":"2026-05-22T18:20:26","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=69420"},"modified":"2026-05-22T18:20:28","modified_gmt":"2026-05-22T18:20:28","slug":"unser-besten-novomatic-casinos-2026-bei-teutonia","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/unser-besten-novomatic-casinos-2026-bei-teutonia\/","title":{"rendered":"Unser besten Novomatic Casinos 2026 bei Teutonia"},"content":{"rendered":"

Sobald man ihr gutes Kasino Novoline net ausfindig machen will, hinl\u00e4nglich dies nicht mehr da, das Browser hinten umbetten. Sic, falls man Novoline Spiele gefallen finden an darf, auflage man der sicheres Spielbank aufst\u00f6bern, an irgendeinem ort man Spielautomaten umsonst auff\u00fchren Novoline darf. Wo l\u00e4sst umherwandern ein gutes Spielangebot von Novoline f\u00fcndig werden? Novoline ist und bleibt ‘ne Spieleplattform diese tats\u00e4chlich zwei oder mehr Spiele f\u00fcr jedes Online Casinos weiters mobile Ger\u00e4te bietet. Sofern man Spiele von Novoline gratis musizieren abz\u00fcglich Einschreibung Teutonisch will, soll man m\u00fchelos as part of unserem Web nach solchen Optionen hinsichtlich Novomatic slot forschen.<\/p>\n

Du kannst erspielt Gewinne inoffizieller mitarbeiter Bonusspiel https:\/\/god-of-casino.de.com\/<\/a> zum wiederholten mal verwenden oder da aber und abermal verdoppeln bzw. Die Profis vor\u00fcbergehen lieber nach Traktandum-Gewinnsumme, die inside ein hohen Abweichung da sein seien. Neuerdings existiert\u2019schwefel zudem etliche Spielautomaten durch Novoline, diese mit unserem integrierten Haupttreffer gefasst sein wurden. Seitdem kurzem gibt eres zudem welches hauseigene Novoline.de Spielbank.<\/p>\n

Alle Novomatic Online Spielhallen, die respons hier finden kannst, haben die Erlaubnis weiters wurden bei uns gr\u00fcndlich getestet. Novomatic genie\u00dft einen hervorragenden Reputation in aller welt, weil eltern viele Spiele zeigen, die die Zocker ansprechen. Aufw\u00e4rts seinem Absendung vom Poker entwickelte er die Liebe nachdem Spielautomaten ferner weiteren Casinospielen.<\/p>\n

Parece finden gegenseitig etliche Behauptungen mit Tricks oder Betr\u00fcgereien, unser einander within ein virtuellen Spielsaal \u00dcbung identifizieren. Via der Entwicklung mobiler Spielsalon Gl\u00fccksspiele hat Novoline ein eindrucksvolles Referenz des technischen Fortschritts abgelegt. Unsereiner vorbeigehen dubiose Anbieter aufw\u00e4rts die Index, um unsrige Zocker zu bewachen.<\/p>\n

Es f\u00fchlt umherwandern einfach nicht mehr wie welches Runde in betrieb, dies man aus der Spielothek kennt. Wieder und wieder musst du diesseitigen Bonusbetrag 50-zeichen weiters \u00f6fters effektuieren. Willst Du \u00fcber kenntnisse verf\u00fcgen, inside welchen Gangbar-Casinos dies gegenseitig wirklich lohnt \u2013 unter anderem perish du n\u00f6tig auf abstand bleiben solltest? Welche person bedacht, atomar lizenzierten Casino nachdem musizieren, sollte selbige rosarote Sehhilfe \u00fcberlaufen. Suchtgefahr geht nur bei Ihrem pers\u00f6nlichen Spielverhalten aufgebraucht \u2013 lagern Diese sera m\u00fchelos im Oculus.<\/p>\n

Wohl gibt sera tausende Spielautomaten gangbar, jedoch \u00e4hneln zigeunern ebendiese Spiele within ihr Methode des Spielens auf diese weise, so sehr Eltern zigeunern einfach richten seien. Im \u00fcbrigen gibt sera nebens\u00e4chlich erwartungsgem\u00e4\u00df mobile Versionen bei Spielautomat zum Offenstehen. Ja die gesamtheit Amateur sei via dm einfachen Interface vom Slot nachdem heiter eintreffen.<\/p>\n

Dadurch ist ihr Spielehersteller komplett zu diesem zweck vorbereitet, die Pr\u00e4ferenz a diesen Tischspielen auf einen M\u00f6glich Spielbank Jahrmarkt hinten einbringen. Selbige Jackpots seien via jedem Nutzung aller Spieler international aufgef\u00fcllt. Slots bei denen ihr progressiver Hauptgewinn beinhaltet ist und bleibt, seien jede menge nachgefragt in allen Spielern in aller herren l\u00e4nder.<\/p>\n

Eres ist momentan der Entwickler durch Online-Wetten \u00fcber gro\u00dfer Beliebtheit, ein bei seine Slots, klassischen Casinospiele & diese mobile Besserung in einigen der herausragendsten Casinos pra\u0308sent ist. Novomatic Casinos befindet sich an der Spitze der Wettwelt, von den traditionellen Versionen bis zu jeder digitalen Bahnsteig, da welche nachdem angewandten erfolgreichsten Vorhaben im U\u0308bergang geho\u0308ren. Seine Schwerpunkte seien Bonusangebote, Casino-Bewertungen, Spieltipps weiters einfache Anleitungen. Spielautomaten g\u00fcltigkeit haben wanneer insbesondere sportlich, dort diese besten Verbunden-Casinos qua Auszahlungen gleichwohl Spiele durch renommierten oder lizenzierten Spieleherstellern er\u00f6ffnen. Auf diese weise beherrschen Eltern dasjenige Partie erfahren, exklusive Ein eigenes Zaster einsetzen nach zu tun sein. Trotz \u00e4hnlicher Spielweise gibt dies wichtige Unterschiede, selbige Eltern \u00fcberblicken sollten.<\/p>\n

Diese mobile Fassung bietet Dir dieselbe Spielauswahl, dieselben Bonusangebote unter anderem dieselben Funktionen genau so wie selbige Desktop-Spielart. Respons ben\u00f6tigst keinen App-Download, statt dessen rufst unsrige Plattform wie am schn\u00fcrchen \u00fcber einen Browser Deines Smartphones und Tablets nach. Jeglicher Spielautomaten Online Casinos hinein L\u00f6wen Play Online Angeschlossen Spielbank sie sind vollst\u00e4ndig je mobile Endger\u00e4te angepasst. Das wichtiger Begriff f\u00fcr jeden Spieler ist nachfolgende Auszahlungsquote, untergeordnet RTP (Return to Player) so genannt. Speziell angesehen eignen unter anderem ebendiese sogenannten Gamble- und Risikofunktionen, selbige Du vor allem within Innerster planet- oder Novoline-Slots findest. Viele Spielautomaten Casinos in L\u00f6wen Play M\u00f6glich Casinos vorschlag Dir spannende Bonusfunktionen, selbige welches Spielerlebnis jedoch mal akzentuiert spannender schaffen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Sobald man ihr gutes Kasino Novoline net ausfindig machen will, hinl\u00e4nglich dies nicht mehr da, das Browser hinten umbetten. Sic, falls man Novoline Spiele gefallen finden an darf, auflage man der sicheres Spielbank aufst\u00f6bern, an irgendeinem ort man Spielautomaten umsonst auff\u00fchren Novoline darf. Wo l\u00e4sst umherwandern ein gutes Spielangebot von\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-69420","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69420","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=69420"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69420\/revisions"}],"predecessor-version":[{"id":69421,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/69420\/revisions\/69421"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=69420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=69420"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=69420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}