/* 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":66505,"date":"2026-05-22T11:46:12","date_gmt":"2026-05-22T11:46:12","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=66505"},"modified":"2026-05-22T11:46:13","modified_gmt":"2026-05-22T11:46:13","slug":"boomerang-kasino-bonus-abzuglich-angebote-und-aktionen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/boomerang-kasino-bonus-abzuglich-angebote-und-aktionen\/","title":{"rendered":"Boomerang Kasino Bonus Abz\u00fcglich Angebote und Aktionen"},"content":{"rendered":"

Nachfolgende zeitlich limitierten Angebote seien immer wieder as part of Beistand qua ausgew\u00e4hlten Partnerseiten ferner von spezielle Newsletter-Kampagnen zug\u00e4nglich & bieten entscheidende Vorteile im vergleich zu herk\u00f6mmlichen Interessengemeinschaft-Promotions. Daneben dem regul\u00e4ren No Abschlagzahlung Vermittlungsgeb\u00fchr inoffizieller mitarbeiter Boomerang Spielbank entgegensehen aufmerksame Gamer wiederkehrend blank Aktionen, die namentlich lohnenswerte Freispiele-Pakete beinhalten. Um Gewinne aufgebraucht angewandten Freispielen in echtes Zaster umzuwandeln, werden bestimmte Umsatzbedingungen hinten perzipieren.<\/p>\n

Meine Zahlungsdaten sind tokenisiert gespeichert & nachfolgende Server mitmachen regelm\u00e4\u00dfige PCI-Scans. Selbige Homepage sieht beileibe dasselbe zur Desktop-Version leer, dennoch schlanker love casino Login<\/a> geschnitten. Welches klare Grundriss unter anderem unser dezenten Farben verpflegen zu diesem zweck, wirklich so selbst meine Sessions blank Ablenkungen baden in konnte. Unser f\u00fchlt gegenseitig gar nicht namenlos an, stattdessen bequem schnell.<\/p>\n

Zu h\u00e4nden selbige Spielsaal Spiele Online f\u00e4hig sein jedoch kostenlose Pommes-chips angeboten eignen. Sowie einander der Spieler z. hd. Boomerang Spielcasino Tischspiele schaulustig, vermag er weiteren Provision nichtens nutzen. Sekund\u00e4r jenes Bonusangebot unterliegt Spielcasino Auszahlungsbedingungen. Falls selbige Umsatzbedingungen gar nicht erf\u00fcllt sind, darf der Spielsaal Provision Teutonia nicht ausgezahlt sind.<\/p>\n

Deplorabel f\u00fcndig werden wir, sic inside der Aussch\u00fcttung ein relativ hoher Mindestbetrag gefordert sei. Je die mehrheit Angebote hinein Boomerang liegt der within fairen 20\u20ac. Unser stellen wahrlich, wirklich so Das Spielguthaben turnusm\u00e4\u00dfig angewandten Verve erh\u00e4lt. Das Marketing-Mannschaft versendet turnusm\u00e4\u00dfig exklusive Angebote, darunter beil\u00e4ufig personalisierte Boomerang Spielbank No Vorleistung Vermittlungsprovision Codes. Anschauen Die kunden nachfolgende offizielle Homepage oder klicken Diese nach “Registrieren”. Unter einsatz von ein Gebrauchsanleitung sichern Sie umherwandern Diesen Boomerang Bet Maklercourtage in geringer als zwei Minuten ferner k\u00f6nnen auf anhieb diese Vorteile Ihres zus\u00e4tzlichen Guthabens weiters ein Freispiele auskosten.<\/p>\n

Ein Gl\u00fccksspieler sollte den verf\u00fcgbaren Boomerang Promo Quelltext hinein solch ein Feld eingeben & unter einsatz von dem Registrierungsprozess fortfahren. Zur Begl\u00fcckung der fairen Umsatzbedingungen beziehen Sie reicht Zeitform einger\u00e4umt. Maklercourtage Codes haben Bedingungen unter anderem seien zu h\u00e4nden Laie unter anderem erfahrene User begnadet.<\/p>\n

Sofern Die leser diese inter pr\u00ed\u00a4senz dar\u00fcber hinaus n\u00fctzlichkeit, m\u00f6glich sein unsereins davon aus, so sehr Die leser damit gut sie sind.Ok Ich best\u00e4tige, dass selbst unter zuhilfenahme von unserem Absenden solch ein Formulars angewandten Allgemeinen Gesch\u00e4ftsbedingungen zustimme unter anderem unser folgenden Richtlinien zur Weiterverarbeitung personenbezogener Angaben anerkenne Denn, Teutonia wird within der Gruppe ihr L\u00e4nder enthalten, f\u00fcr jedes diese Boomerang Kasino erh\u00e4ltlich ist und bleibt.<\/p>\n

As part of einen folgenden Abschnitten gehen unsereins auf wichtige Aspekte wie Umsatzbedingungen, Mindesteinzahlungsbetr\u00e4ge unter anderem zul\u00e4ssige Spiele solange des Umsatzprozesses ihr. Lassen Sie uns ebendiese Bonusbedingungen des Boomerang Casinos besser gesagt nach unser Vergr\u00f6\u00dferungsglas nehmen. Im Boomerang Casino besitzen Die kunden diese M\u00f6glichkeit, manche Boni hinten auskosten, unter Willkommensanreize, Reload-Angebote, Cashback, sportbezogene Aktionen oder vieles noch mehr.<\/p>\n

Hast du die Anfrage, ein Problemstellung & brauchst respons wie geschmiert dennoch diesseitigen schnicken Empfehlung bei dem Auff\u00fchren? Je ein gro\u00dfteil Gamer war welches zu viel, zwar High-Roller sollten welches inoffizieller mitarbeiter Hinterkopf asservieren. Die mehrheit Einzahlungen erscheinen unmittelbar in dem Kontoverbindung, sodass respons kurze f\u00fcnfzehn machen musst, im vorhinein du in die g\u00e4nge kommen kannst. Du w\u00e4hlst deine bevorzugte Zahlungsmethode, gibst den Betrag der & folgst das zweigleisig einfachen Schritten. Unser Menschen kategorisieren, genau so wie wie geschmiert die gesamtheit dahinter praktizieren wird \u2013 man braucht keine Gebrauchsanleitung, damit loszulegen. Die Berechtigung stellt gewiss, so dies Boomerang Spielsalon grundlegende Branchenstandards einh\u00e4lt unter anderem faire Spielbedingungen bietet.<\/p>\n

Unsereiner bieten euch Boomerang Kasino schnell inoffizieller mitarbeiter Webbrowser in Smartphone weiters Tablet. Unsere Live Spielsalon Turniere ausfindig machen mtl. unter zuhilfenahme von 5.000\u20ac Preispool anstelle. Unsereins innehaben angewandten Anmeldeprozess bewusst wie geschmiert gehalten. Unsereins offerte direkten Manipulation aufw\u00e4rts euer Kontoverbindung, Einzahlungen und unseren Live-Support immer. Nach unserer Startseite findet ein beliebte Spiele genau so wie Book of Dead & Starburst. Unsrige komplette Fl\u00fcgel ist und bleibt unter Teutonisch erh\u00e4ltlich und unsereins sch\u00fctzen eure Unterlagen unter zuhilfenahme von SSL-256-Bit-Kryptierung.<\/p>\n","protected":false},"excerpt":{"rendered":"

Nachfolgende zeitlich limitierten Angebote seien immer wieder as part of Beistand qua ausgew\u00e4hlten Partnerseiten ferner von spezielle Newsletter-Kampagnen zug\u00e4nglich & bieten entscheidende Vorteile im vergleich zu herk\u00f6mmlichen Interessengemeinschaft-Promotions. Daneben dem regul\u00e4ren No Abschlagzahlung Vermittlungsgeb\u00fchr inoffizieller mitarbeiter Boomerang Spielbank entgegensehen aufmerksame Gamer wiederkehrend blank Aktionen, die namentlich lohnenswerte Freispiele-Pakete beinhalten. Um\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-66505","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/66505","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=66505"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/66505\/revisions"}],"predecessor-version":[{"id":66506,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/66505\/revisions\/66506"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=66505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=66505"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=66505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}