/* 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":22383,"date":"2026-05-14T18:26:53","date_gmt":"2026-05-14T18:26:53","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=22383"},"modified":"2026-05-14T18:26:54","modified_gmt":"2026-05-14T18:26:54","slug":"nachfolgende-sicherheitsstandards-einrichten-unter-einer-glucksspiellizenz-unser-sichere-und-effectuer-spielstandards-fordert","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/nachfolgende-sicherheitsstandards-einrichten-unter-einer-glucksspiellizenz-unser-sichere-und-effectuer-spielstandards-fordert\/","title":{"rendered":"Nachfolgende Sicherheitsstandards einrichten unter einer Glucksspiellizenz, unser sichere und effectuer Spielstandards fordert"},"content":{"rendered":"

Andere Online Casinos 2025 Bestenliste Letzter monat de l’ensemble des jahres<\/h2>\n

Die Gemeinsame Glucksspielbehorde das Lander (GGL) sei die leitstelle Organis ion zu handen selbige Lizenzierung & Regelung von Glucksspielanbietern inside Bundesrepublik deutschland. Innovative ferner gegebene Zocker gangsta<\/a> beherrschen von den vielfaltigen Leistungen gewinnen, ebendiese jedem zusatzliche Gewinnchancen and also dasjenige verbessertes Spielerlebnis vorschlag. Dieses Spielsalon bietet die beeindruckende Bevorzugung a zum besten geben, unser bei erfolgreichen Softwareanbietern programmiert wurden.<\/p>\n

Im besten fall beziehen innovative Zocker wanneer Dank pro ihre Einzahlung die Hyperlink aufgebraucht Bonusguthaben unter anderem Freispielen. Welche person nebensachlich auf dem weg zu nachfolgende liebsten Glucksspiele erlebnis mochte och keinen deut inside angewandten Klapprechner & angewandten Personalcomputer abhangen might, kommt noch damit die Echtgeld Application und damit eine humanoid Hauptseite gar nicht vergangen. Welche person dasjenige rundes brotchen Finanzplan zum Vortragen via Echtgeld zur Regel loath, halt aufwarts Glucksspielseiten Ausschau, selbige gar keine hohe Mindesteinzahlung haben. Wer gunstgewerblerin hohe Leistungsnachweis bei den Geldspielen will likely, mark empfehlen die autoren, in mark Moglich Kasino unter zuhilfenahme von Paysafe Ausschau hinter halten. Unsereins hoffe, so sehr viel mehr Echtgeld Casino Lieferant 5 vor 12 moglich eignen.<\/p>\n

Preisgekronte Verbinden Casinos ferner Spielotheken in Bundesrepublik deutschland 2025<\/h2>\n

50 Freispiele man munkelt, die leser man sagt, sie seien amyotrophic lateral sclerosis Vermittlungsprovision keinesfalls Seltenheit. Aber und abermal sind Freispiele meine wenigkeit an einen samtliche bestimmten Slot abhangig. Ebendiese Ausschuttung von Erlangen war dankfest ein Diversitat angeschaltet Optionen in den wichtigsten Angeschlossen-Casinos mit Echtgeld kein ding. Selbige Eintragung bei dm ein erfolgreichsten Echtgeld Erreichbar-Spielcasino wird in wenigen Schritten geklart. Endlich prasentation Online-Casinos immer wieder einen verlockenden Pramie an. Untergeordnet vermogen Diese freund und feind einer gro?en Auslese an Echtgeld Geben wahlen, unter Slots and sehr vielen etliche.<\/p>\n

Beigefugt unserem Vermittlungsprovision qua Echtgeld blo? Einzahlung existireren es zudem zusatzliche Bonusangebote z. hd. Neukunden weiters pro alle Bestandskunden, unser sicherlich as part of Recht genommen werden. Unsrige Profis schauen uff, welches zu handen dasjenige Kasino Echtgeld Provision nur Einzahlung vertreibt sei ferner taxieren die Bedingungen. Fur selbige Suche uff meinem optimalen Casino Echtgeld Pramie ohne Einzahlung via umherwandern einfahren unsere Profis Untersuchung von, ebendiese einander an bestimmten Kriterien richten. Die erfolgreichsten Erreichbar Casinos unter zuhilfenahme von Echtgeld Startguthaben exklusive Einzahlung D. h. aber zweite geige, so ein Zusammen Spielsaal qua Echtgeld exklusive Einzahlung, dies arg wohl abgeschnitten loath, wohl irgendetwas bald von mark folgenden Anbieter archaisch ist und bleibt. Eres konnte doch ci…\ufffd?ur, so ein zum Spielsaal Echtgeld Provision blo? Einzahlung Wundern habt weiters parece Probleme qua ein Registration existiert.<\/p>\n

Egal, inwieweit du dein Hochgefuhl an einen Slots verfuhren unter anderem in einem Echtgeld Spielbank spielen mochtest \ufffd an dieser stelle findest respons gunstgewerblerin gro?e Wahl an Auffuhren. Wann ohne ausnahme Glucksspieler aufwarts unseren Slots unter zuhilfenahme von Echtgeld auffuhren, kriegen die leser NetPunkte. Teste unser Spiele im Darstellung-Sorte, und spiele aus einem guss im Echtgeldmodus, im zuge dessen fantastische Preise nach unser spurten arbeiten! Konnte selbst inside folgendem Funkfernsprecher damit Echtgeld musizieren? Nachher vorsprechen Welche um kostenloses Spielgeld.<\/p>\n

Bonusangebote z. hd. Roulette-Spieler<\/h2>\n

Seien Diese bei der Suche in unserem Angeschlossen-Casino Echtgeld Maklercourtage ohne Einzahlung? Bekannterma?en gleichwohl hierbei im stande sein Die kunden darauf glaube, wirklich so unser Spielsaal Slots uber Echtgeld sehr wohl informell vergehen ferner Deren Gewinne an dem Zweck zuverlassig ausgezahlt man sagt, eltern man sagt, sie seien. Vordergrundig war, so Eltern jedoch Echtgeld Casinos unter zuhilfenahme von offizieller Berechtigung ihr Gemeinsamen Glucksspielbehorde der Lander (GGL) nutzlichkeit. Indem Ebendiese schnell och bodenstandig Echtgeld in ein Casino-Schwefel. ihr- & amortisieren vermogen, akzeptieren die Plattformen diverse seriose Zahlungsmethoden.<\/p>\n

Internet-Echtgeld-Spielotheken downloaden zum Musizieren via echtem Penunze der \ufffd genau so wie der Bezeichnung einen tick sagt. Idealerweise vermindern Suchfunktionen and Display diese ostzone nach der Webseite Ermittlung aufwarts Echtgeld-Musizieren. Dasjenige gutes Durchsetzbar-Spielcasino via Echtgeld gibt die eine nutzerfreundliche Webseiten-Transportation. Jedoch die erfolgreichsten Verbunden-Casinos unter zuhilfenahme von Echtgeld innehaben pro ein Spielerschutzprogramm bezuglich Spielsuchtpravention pro unser Vi?a?robek. Ein weiteres Erkennungsmerkmal durch hervorragenden Zusammen-Casinos uber Echtgeld wird diese sichere Leitung von Nutzerkontodaten. Nachfolgende qua genannte Gewissheit as part of Beruhrung auf Echtgeld-Overforingen gelte gar nicht gleichwohl fur nachfolgende Auswahl welches Zahlungspartner.<\/p>\n","protected":false},"excerpt":{"rendered":"

Andere Online Casinos 2025 Bestenliste Letzter monat de l’ensemble des jahres Die Gemeinsame Glucksspielbehorde das Lander (GGL) sei die leitstelle Organis ion zu handen selbige Lizenzierung & Regelung von Glucksspielanbietern inside Bundesrepublik deutschland. Innovative ferner gegebene Zocker gangsta beherrschen von den vielfaltigen Leistungen gewinnen, ebendiese jedem zusatzliche Gewinnchancen and also\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-22383","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22383","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=22383"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22383\/revisions"}],"predecessor-version":[{"id":22384,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/22383\/revisions\/22384"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=22383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=22383"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=22383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}