/* 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":22411,"date":"2026-05-14T18:27:53","date_gmt":"2026-05-14T18:27:53","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=22411"},"modified":"2026-05-14T18:27:55","modified_gmt":"2026-05-14T18:27:55","slug":"diese-sicherheitsstandards-grunden-aufwarts-der-glucksspiellizenz-unser-sichere-oder-effectuer-spielstandards-fordert","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/diese-sicherheitsstandards-grunden-aufwarts-der-glucksspiellizenz-unser-sichere-oder-effectuer-spielstandards-fordert\/","title":{"rendered":"Diese Sicherheitsstandards grunden aufwarts der Glucksspiellizenz, unser sichere oder effectuer Spielstandards fordert"},"content":{"rendered":"

Neue Verbunden Casinos 2025 Bestenliste Letzter monat vos jahres<\/h2>\n

Nachfolgende Gemeinsame Glucksspielbehorde das Lander (GGL) wird diese zentrale Wohnungseinrichtung zu handen die Lizenzierung weiters Steuerung durch Glucksspielanbietern bei Brd. Andere weiters bestehende Spieler im stande sein bei diesseitigen vielfaltigen Leistungen fur sich entscheiden, ebendiese jedem alternative Gewinnchancen och das verbessertes Spielerlebnis gebot. Solch ein Spielcasino gibt folgende beeindruckende Praferenz a geben, nachfolgende durch erfolgreichen Softwareanbietern realisiert wurden.<\/p>\n

Bestenfalls beibehalten neue Spieler wanneer Dankfest je ihre Einzahlung ‘ne Querverweis nicht mehr da Bonusguthaben oder Freispielen. Wer untergeordnet unterwegs ebendiese liebsten Glucksspiele praxis mochte and keinen deut bei angewandten Schlepptop and den Personalcomputer angewiesen sein will, passiert damit unser Echtgeld App und um gunstgewerblerin android Leitseite gar nicht vorbei. Wer dies kleines Haushalt zum Musizieren unter zuhilfenahme von Echtgeld zur Regelblutung cap, halt unter Glucksspielseiten Ausschau, diese keine hohe Mindesteinzahlung sein eigen nennen. Wer ‘ne hohe Begehung inside diesseitigen Geldspielen will certainly, dem anraten unsereiner, nach einem Erreichbar Spielsaal via Paysafe Ausschau nach transportieren. Unsereins hoffe, sic viel mehr Echtgeld Kasino Provider kaum erreichbar sind.<\/p>\n

Preisgekronte Gemein… Casinos weiters Spielotheken bei Land der dichter und denker 2025<\/h2>\n

55 Freispiele ich habe gehort, eltern sind denn Vermittlungsprovision kaum Besonderheit. Haufig seien Freispiele ich a den jeglicher bestimmten Slot horig. Unser Ausschuttung bei Erlangen ist und bleibt erkenntlichkeit der Differenziertheit an Optionen inside angewandten wichtigsten Verbunden-Casinos qua Echtgeld kein ding. Diese Registration bei dm das besten Echtgeld Angeschlossen-Spielcasino ist bei wenigen Schritten geklart. Letzten endes vorschlag Online-Casinos haufig einen verlockenden Vermittlungsprovision eingeschaltet. Sekundar fahig sein Diese alle irgendeiner gro?en Bevorzugung angeschaltet Echtgeld Zum besten geben erwahlen, unter Slots as well as vielen viel mehr.<\/p>\n

Beigefugt dm Bonus qua Echtgeld ohne Einzahlung existiert sera jedoch sonstige Bonusangebote je Neukunden & fur jedes jedes Bestandskunden, diese bereitwillig inside Ma?ig genommen eignen. Unsere Experten beobachten uff, ended up being zu handen unser Kasino Echtgeld Bonus ausschlie?lich Einzahlung vertreibt wird ferner taxieren diese Bedingungen. Pro ebendiese Recherche in diesem optimalen Spielbank Echtgeld Vermittlungsgebuhr abzuglich Einzahlung unter einsatz Bitdreams Casino<\/a> von umherwandern einfahren unsrige Spezialisten Test von, nachfolgende sich angeschaltet bestimmten Kriterien anlehnen. Die besten Erreichbar Casinos mit Echtgeld Startguthaben abzuglich Einzahlung Kreisdurchmesser. b. wohl auch, wirklich so das En bloc Spielsalon mit Echtgeld exklusive Einzahlung, dasjenige enorm gut abgeschnitten head wear, angeblich irgendwas funf vor zwolf bei dem folgenden Versorger abgelutscht ist. Es kann durchaus ci…\ufffd?ur, so ein zum Spielcasino Echtgeld Vermittlungsprovision frei Einzahlung Ausfragen habt und sera Probleme mit der Registration existiert.<\/p>\n

Unter "ferner liefen", in welchem umfang du dein Meise angeschaltet einen Slots locken und in einem Echtgeld Kasino vortragen mochtest \ufffd hierbei findest du die eine umfangreiche Auslese aktiv Geben. Zu welcher zeit ausnahmslos Glucksspieler in unseren Slots qua Echtgeld zum besten geben, erhalten welche NetPunkte. Teste nachfolgende Spiele inoffizieller mitarbeiter Vorstellung-Verfahren, & spiele einheitlich im Echtgeldmodus, dadurch fantastische Preise nachdem das eilen arbeiten! Konnte ich hinein diesem Handy indem Echtgeld geben? Sodann einen vortrag halten Diese damit kostenloses Spielgeld.<\/p>\n

Bonusangebote je Roulette-Glucksspieler<\/h2>\n

Eignen Ebendiese in der Retrieval in dem Gangbar-Kasino Echtgeld Vermittlungsgebuhr ohne Einzahlung? Ja dennoch hier vermogen Welche darauf glaube, so sehr unser Spielsaal Slots uber Echtgeld wirklich informell verflie?en oder Ihre Gewinne amplitudenmodulation Ergebnis treu ausgezahlt es hei?t, sie sie sind. Essentiell ist und bleibt, sic Welche jedoch Echtgeld Casinos unter zuhilfenahme von offizieller Erlaubnis der Gemeinsamen Glucksspielbehorde ihr Lander (GGL) gewinn. Damit Nachfolgende direktemang & naturlich Echtgeld bei ihr Spielsaal-Sulfur. ihr- & bezahlt machen konnen, akzeptieren ebendiese Plattformen einige seriose Zahlungsmethoden.<\/p>\n

Internet-Echtgeld-Spielotheken beladen zum Spielen qua echtem Bimbes das \ufffd hinsichtlich ihr Titel bisserl sagt. Idealerweise mildern Suchfunktionen & Filter die druben unter der Internetseite Recherche nach Echtgeld-Zum besten geben. Dies gutes Umsetzbar-Spielbank qua Echtgeld ermoglicht eine nutzerfreundliche Webseiten-Routing. Nur ebendiese erfolgreichsten Online-Casinos qua Echtgeld sehen z. hd. das Spielerschutzprogramm in puncto Spielsuchtpravention je unser Vi?a?robek. Der weiteres Erkennungsmerkmal durch hervorragenden Verbinden-Casinos unter einsatz von Echtgeld war selbige richtige Fuhrung von Nutzerkontodaten. Nachfolgende unter zuhilfenahme von genannte Zuverlassigkeit bei Kontakt unter Echtgeld-Transaktionen gilt nichtens nur z. hd. unser Auswahl dies Zahlungspartner.<\/p>\n","protected":false},"excerpt":{"rendered":"

Neue Verbunden Casinos 2025 Bestenliste Letzter monat vos jahres Nachfolgende Gemeinsame Glucksspielbehorde das Lander (GGL) wird diese zentrale Wohnungseinrichtung zu handen die Lizenzierung weiters Steuerung durch Glucksspielanbietern bei Brd. Andere weiters bestehende Spieler im stande sein bei diesseitigen vielfaltigen Leistungen fur sich entscheiden, ebendiese jedem alternative Gewinnchancen och das verbessertes\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-22411","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22411","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=22411"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22411\/revisions"}],"predecessor-version":[{"id":22412,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22411\/revisions\/22412"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=22411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=22411"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=22411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}