/* 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":167287,"date":"2026-06-22T12:29:28","date_gmt":"2026-06-22T12:29:28","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=167287"},"modified":"2026-06-22T12:29:28","modified_gmt":"2026-06-22T12:29:28","slug":"glucksspiele-gibt-es-in-ihnen-farben-und-gestalten-wenn-praktisch-aufwarts-ein-ganzen-welt","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/glucksspiele-gibt-es-in-ihnen-farben-und-gestalten-wenn-praktisch-aufwarts-ein-ganzen-welt\/","title":{"rendered":"Glucksspiele gibt es in ihnen Farben und Gestalten wenn praktisch aufwarts ein ganzen Welt"},"content":{"rendered":"

Glucksspiel und M\u00f6glich Casinos as part of Deutschland<\/h2>\n

Seit https:\/\/sahara-sands-casino.com\/<\/a> Menschengedenken fordert gentleman auf ihnen moglichen Formen ci\ufffd”?our Gluck heraus und might dar\u00fcber Erfolg nicht mehr da seinem Einsatz machen. Seit diese Netz uns so flachendeckend vernetzt, findet man unendlich viele Angebote & Online-Casinos. Jedoch gehen auch heute noch sehr mehrere Leute \u00fcber vergnugen in diese \ufffdechten\ufffd Casinos vorab Location. Ja ist ein einzigartiges Stimmung notwendig und diese ganze Gewerbe loath etwas eigene Brauche und Traditionen. In Stay-Spiele kriegt charakter diese Atmosphare zwar nebensachlich etwas vielleicht vermittelt, und das inoffizieller mitarbeiter anderen Wohnzimmer.<\/p>\n

In Deutschland ist ein Glucksspielsektor etwas seit etlichen Jahren immer vorwarts am Entstehen. Dar\u00fcber, so wir samtliche Netz haben, steht mir schon nichts mehrere inoffizieller mitarbeiter Verloren. Ganz irrelevant, in wie weit Notebook, Pc, Product & Smartphone, wir fahig sein jederzeit und alluberall beginnen, wenn wir uns dann einen bestimmten Versorger erwahlt haben.<\/p>\n

Diese erfolgreichsten Gemeinsam Casino Versorger 2025<\/h2>\n

Wenn Sie in ein Suche aufwarts einen Top Moglich Casinos sind, diese daneben schnellen Auszahlungen auch einen kompetenten Kundenservice pr\u00e4sentieren, als nachstes man sagt, sie sind Diese in diese autor angeschaltet ein geeigneten Lokalitat. Ganz Echtgeld Casinos, diese wir testen und bewerten, mussen besprochende Kriterien erf\u00fcllen. Jedoch so schafft es ein Versorger aufwarts unsere Top-Liste das erfolgreichsten Erreichbar Casino Portalen. Grundvoraussetzung hierfur ist naturlicherweise immer auch diese gultige Erlaubnis.<\/p>\n

Unsere Top-Liste ein Erreichbar Casinos haben diese autoren basierend auf zahlreichen unterschiedlichen Kriterien f\u00fcr Sie zusammengestellt. Noch diese allerbesten Echtgeld Casinos machen es, auf unserer Internet-angebot gelistet nach sind. Anschlie?end gibt es unsere Kriterien, wenn wir einen Casino Prufung verwirklichen<\/p>\n

Beste deutsche Casinos<\/h2>\n

Nun Spielen! Nun Auffuhren! Nun Auffuhren! Nun Spielen! Nun Spielen! Nun Auffuhren! Nun Spielen! Nun Vortragen! Nun Spielen! Nun Vortragen! Nun Auffuhren! Nun Vortragen! Heute Spielen! Nun Spielen! Nun Spielen! Nun Geben! Nun Geben! Nun Vortragen! Nun Spielen! Nun Geben! Nun Auffuhren! Nun Spielen! Nun Spielen! Heute Vortragen! Nun Auffuhren! Nun Auffuhren! Nun Spielen! Heute Spielen! Nun Spielen! Nun Vortragen! Nun Geben!<\/p>\n

Glucksspiel Erlaubnis des Erreichbar Casinos<\/h2>\n

Eine sichtbar vorliegende Erlaubnis ist diese eine Grundvoraussetzung, so wir \u00fcber diesem Casino Test gar erst beginnen. Hier achten wir darauf, so diese Erlaubnis in der seriosen Glucksspielbehorde vergeben ist und diese auch rechtskraftig ist.<\/p>\n

Spielerschutz in Erreichbar Spielhallen<\/h2>\n

In dem M\u00f6glich Casino Test schmei?en wir ebenso einen Meinung darauf, die Wege Glucksspieler haben, ein eigenes Spielverhalten inoffizieller mitarbeiter Auge nach behalten. Das serioses Casino gibt nach diesem abschluss immer diese Opportunitat angeschaltet, so Die sich getrennt Limits legen fahig sein. Jedoch dar\u00fcber ist gewahrleistet, so Sie der etwaigen Spielsucht pr\u00e4ventiv vermeiden k\u00f6nnen.<\/p>\n

Auszahlungsquoten in einen Moglich Glucksspielen<\/h2>\n

Fairness und Zuverlassigkeit ist und bleibt beilaufig jedoch dann liefert, wenn diese Auszahlungsraten ein Spiele offengelegt sind. Jedoch so qualifiziert sein sich Spieler auf jeden fall sein, so kein Betrug in der Gemeinsam Spielothek vorliegt und es sich dar\u00fcber “echte”, somit lizenzierte Spiele renommierter Ernahrer handelt. Oft ist hier in Dem Kundenkonto auch ein Hergang angezeigt, beim vorangegangene Spielrunden ersichtlich sind.<\/p>\n

Anmeldung und Anmeldeprozess in europaischen Gemeinsam Casinos<\/h2>\n

Jedoch wenn sich das Casino Glucksspieler geschenkt und inwendig weniger Minuten in dem ein Netz Casinos anmelden kann, herbeifuhren wir unseren Prufung weiter. Hier lasst sich etwas vorab meistens einsehen, in wie weit ein M\u00f6glich Casino kundenfreundlich und fur deutsche Spieler geeignet ist und bleibt.<\/p>\n

Bonusangebote ein Echtgeld Casinos<\/h2>\n

Diese erfolgreichsten Moglich Casinos belohnen diese Anmeldung des neuen Spielers auf einsatz von gewissen Bonusangeboten. Hier handelt es sich meistens um einen Willkommensbonus und auch Freispiele. In dem Casino Test durchlesen wir diese angebotenen Bonusangebote und werfen nach diesem sache nebensachlich einen Blick in diese Pramie- & Umsatzbedingungen.<\/p>\n

Wahl angeschaltet Spielen in dem Umsetzbar Casino Versorger<\/h2>\n

Daneben einen Bonusangeboten ist das Hauptgrund fur jedes diese Anmeldung in einem M\u00f6glich Casino des ofteren sekundar diese Wahl ein angebotenen Casino-Spiele. Nach handen deutsche Glucksspieler ist es intensiv oft prinzipiell, so es hier jedoch wenigstens Einschrankungen gibt und im besten fall auch Live Casino Spiele serviceleistungen sind.<\/p>\n","protected":false},"excerpt":{"rendered":"

Glucksspiel und M\u00f6glich Casinos as part of Deutschland Seit https:\/\/sahara-sands-casino.com\/ Menschengedenken fordert gentleman auf ihnen moglichen Formen ci\ufffd”?our Gluck heraus und might dar\u00fcber Erfolg nicht mehr da seinem Einsatz machen. Seit diese Netz uns so flachendeckend vernetzt, findet man unendlich viele Angebote & Online-Casinos. Jedoch gehen auch heute noch sehr\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-167287","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/167287","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=167287"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/167287\/revisions"}],"predecessor-version":[{"id":167288,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/167287\/revisions\/167288"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=167287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=167287"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=167287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}