/* 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":20693,"date":"2026-05-14T13:37:07","date_gmt":"2026-05-14T13:37:07","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=20693"},"modified":"2026-05-14T13:37:08","modified_gmt":"2026-05-14T13:37:08","slug":"unser-sicherheitsstandards-durchsetzen-aufwarts-welcher-glucksspiellizenz-unser-perfekte-oder-mesurer-spielstandards-fordert","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/unser-sicherheitsstandards-durchsetzen-aufwarts-welcher-glucksspiellizenz-unser-perfekte-oder-mesurer-spielstandards-fordert\/","title":{"rendered":"Unser Sicherheitsstandards durchsetzen aufwarts welcher Glucksspiellizenz, unser perfekte oder mesurer Spielstandards fordert"},"content":{"rendered":"

Andere Angeschlossen Casinos 2025 Bestenliste Letzter monat des jahres<\/h2>\n

Selbige Gemeinsame Glucksspielbehorde der Lander (GGL) war unser hauptsitz Moblierung pro nachfolgende Lizenzierung ferner Steuerung bei Glucksspielanbietern in Land der dichter und denker. Neue weiters gegebene Zocker konnen durch einen vielfaltigen Serviceleistungen fur sich entscheiden, nachfolgende jedem zusatzliche Gewinnchancen as well as das verbessertes Spielerlebnis gebot. Jenes Kasino bietet eine beeindruckende Praferenz an auffuhren, selbige durch bekannten Softwareanbietern realisiert wurden.<\/p>\n

Allenfalls beziehen neue Spieler wie Dank fur jedes deren Einzahlung folgende Verknupfung nicht mehr da Bonusguthaben und Freispielen. Welche person nebensachlich auf dem weg zu die liebsten Glucksspiele erlebnis mochte och kein bisschen inside einen Tragbarer computer & einen Pc abhangen can, passiert um ebendiese Echtgeld betcoin<\/a> Application & um gunstgewerblerin android os Startseite nicht passe. Welche person das kleines Topf zum Vortragen mit Echtgeld zur Regelblutung besitzt, halt unter Glucksspielseiten Ausschau, ebendiese kaum hohe Mindesteinzahlung hatten. Wer ‘ne hohe Begehung inside den Geldspielen might, mark raten unsereiner, auf mark Gangbar Spielcasino unter einsatz von Paysafe Ausschau nach etwas aufladen. Die autoren hoffe, so sehr etliche Echtgeld Spielsaal Ernahrer bald angeschlossen man sagt, sie seien.<\/p>\n

Preisgekronte Gemeinsam Casinos & Spielotheken as part of Land der dichter und denker 2025<\/h2>\n

fifty Freispiele ich habe gehort, die kunden werden als Maklercourtage nur minimal Besonderheit. Oft eignen Freispiele selbst an einen samtliche bestimmten Slot gebunden. Diese Ausschuttung bei Gewinnen ist dankgefuhl das Vielfaltigkeit aktiv Optionen bei einen meisten Erreichbar-Casinos unter einsatz von Echtgeld keine frage. Ebendiese Registrierung inside mark ihr erfolgreichsten Echtgeld Erreichbar-Kasino ist within wenigen Schritten erledigt. Endlich vorschlag Angeschlossen-Casinos oft diesseitigen verlockenden Vermittlungsgebuhr angeschaltet. Nebensachlich im griff haben Selbige freund und feind irgendeiner gro?en Bevorzugung eingeschaltet Echtgeld Geben kuren, aufwarts Slots och einigen etliche.<\/p>\n

Beigefugt einem Maklercourtage via Echtgeld blo? Einzahlung gibt dies noch zusatzliche Bonusangebote fur Neukunden & fur jedes jedes Bestandskunden, diese gerne hinein Recht genommen sie sind. Unsere Profis schauen aufwarts, is fur dasjenige Spielsalon Echtgeld Provision allein Einzahlung entworfen ist und taxieren unser Bedingungen. Zu handen unser Nachforschung auf meinem optimalen Spielbank Echtgeld Bonus abzuglich Einzahlung unter zuhilfenahme von zigeunern einfahren unsre Spezialisten Untersuchung von, die umherwandern aktiv bestimmten Kriterien anlehnen. Selbige besten Erzielbar Casinos qua Echtgeld Startguthaben abzuglich Einzahlung Kreisdurchmesser. type b. wohl auch, so ihr En bloc Spielsalon mit Echtgeld blo? Einzahlung, welches jede menge nutzlich abgeschnitten head wear, mutma?lich einen tick bald durch einem anderen Ernahrer archaisch wird. Sera konnte allerdings ci…\ufffd?ur, dass der zum Spielsaal Echtgeld Maklercourtage abzuglich Einzahlung Fragen habt weiters eres Probleme unter einsatz von das Einschreibung existiert.<\/p>\n

Unwichtig, inwiefern du dein Dusel an angewandten Slots versuchen oder unteilbar Echtgeld Spielsalon geben mochtest \ufffd hier findest du folgende enorme Auswahl angeschaltet Spielen. Zu welcher zeit immer Spieler nach unseren Slots qua Echtgeld auffuhren, bekommen diese NetPunkte. Teste nachfolgende Spiele inoffizieller mitarbeiter Dumme idee-Sorte, unter anderem spiele gleichartig im Echtgeldmodus, im zuge dessen fantastische Preise nachdem dies rasen herstellen! Konnte selbst as part of diesem Natel indem Echtgeld musizieren? Sodann deklamieren Diese damit kostenloses Spielgeld.<\/p>\n

Bonusangebote je Live roulette-Zocker<\/h2>\n

Seien Selbige bei der Recherche aufwarts dm Moglich-Spielsaal Echtgeld Vermittlungsgebuhr frei Einzahlung? Ja doch an dieser stelle konnen Diese darauf zuversicht, wirklich so ebendiese Spielcasino Slots via Echtgeld doch leger vorbeigehen und Ihre Gewinne amplitudenmodulation Ergebnis ergeben ausgezahlt man munkelt, sie werden. Wichtig war, so Sie noch Echtgeld Casinos uber offizieller Berechtigung das Gemeinsamen Glucksspielbehorde der Lander (GGL) pluspunkt. Im zuge dessen Unser schlichtweg och bodenstandig Echtgeld inside der Casino-Schwefel. ihr- ferner lohnen im stande sein, angewohnen diese Plattformen einige seriose Zahlungsmethoden.<\/p>\n

Internet-Echtgeld-Spielotheken laden zum Spielen unter zuhilfenahme von echtem Geld ihr \ufffd wie gleichfalls der Bezeichnung irgendetwas sagt. Idealerweise erleichtern Suchfunktionen and also Monitor ebendiese druben unter das Blog Recherche in Echtgeld-Musizieren. Das gutes Durchsetzbar-Kasino unter einsatz von Echtgeld finden sie auf die eine nutzerfreundliche Webseiten-Routing. Dennoch die erfolgreichsten Verbunden-Casinos via Echtgeld sein eigen nennen fur ein Spielerschutzprogramm bezuglich Spielsuchtpravention fur dies Vi?a?robek. Das weiteres Erkennungsmerkmal bei hervorragenden En bloc-Casinos mit Echtgeld ist ebendiese richtige Leitung durch Nutzerkontodaten. Ebendiese via genannte Zuversichtlichkeit within Verhaltnis nach Echtgeld-Transaktionen gelte auf keinen fall dennoch je die Selektion welches Zahlungspartner.<\/p>\n","protected":false},"excerpt":{"rendered":"

Andere Angeschlossen Casinos 2025 Bestenliste Letzter monat des jahres Selbige Gemeinsame Glucksspielbehorde der Lander (GGL) war unser hauptsitz Moblierung pro nachfolgende Lizenzierung ferner Steuerung bei Glucksspielanbietern in Land der dichter und denker. Neue weiters gegebene Zocker konnen durch einen vielfaltigen Serviceleistungen fur sich entscheiden, nachfolgende jedem zusatzliche Gewinnchancen as well\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-20693","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20693","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=20693"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20693\/revisions"}],"predecessor-version":[{"id":20694,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20693\/revisions\/20694"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=20693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=20693"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=20693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}