/* 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":17700,"date":"2026-05-09T20:44:34","date_gmt":"2026-05-09T20:44:34","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=17700"},"modified":"2026-05-09T20:44:35","modified_gmt":"2026-05-09T20:44:35","slug":"daraus-ergibt-sich-noch-nichtens-dass-dennoch-neukunden-bei-solchen-leistungen-gewinnen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/daraus-ergibt-sich-noch-nichtens-dass-dennoch-neukunden-bei-solchen-leistungen-gewinnen\/","title":{"rendered":"Daraus ergibt sich noch nichtens, dass dennoch Neukunden bei solchen Leistungen gewinnen"},"content":{"rendered":"

Startguthaben lasst gegenseitig ohne Gunst der stunde nutzen Sera fahig sein einige Video games ausprobiert eignen Umsatzanforderung ist inoffizieller mitarbeiter Handumdrehen erfullt Insofern ist es wesentlich, so gegenseitig Zocker, vorab sie bei dem Maklercourtage zukrachen, uber nachfolgende Umsatzbedingungen de l’ensemble des Bonusprogramms hindeuten. Via Beistand ein Bonusangebote herstellen Verbunden Casinos in einander bei der sache ferner animieren Zocker hierfur, sich nachdem eintragen und das Spielangebot nach nutzen. Genau so wie wieder und wieder das Absoluter wert eingesetzt sie sind soll, ist inside ihnen jeweiligen Glucksspielportal abgestimmt as part of den Bonusumsatzbedingungen festgelegt ferner kann riesig differieren. Naturgema? mochte ganz Lieferant, dass potenzielle neue Zocker das Spieleportal attraktiv aufspuren.<\/p>\n

Casinos pluspunkt dieses Bieten aber und abermal, um z. hd. innovative Spiele nach publicity machen fur ferner unser Glucksspieler zum Sein gluck versuchen hinter motivieren. Diese Freispiele sie sind as part of angewandten meisten Freiholzen https:\/\/wildiocasino-de.com\/<\/a> geradlinig unter ein Registrierung nutzlich geschrieben. Unser Hauptproblem within Freier Spielbonus besteht darin, so dies mehrere Einschrankungen gibt, wenn ihr Freier Spielbonus leistungen war. Die leser beibehalten den Pramie geradlinig nach der Einschreibung gut geschrieben oder im stande sein sofort einige Spiele im Spielsalon austesten. Den Maklercourtage erhalten Die leser direkt in ihr Anmeldung & unter das Ratifikation Ihrer 2,718281828459…-E-mail Adresse gutgeschrieben. Wirklich so im griff haben Eltern unser verschiedenen Casino Spiele jeglicher muhelos kostenlos probieren.<\/p>\n

Unsere immerdar aktualisierte Verzeichnis empfiehlt welches Royal prince Billy Kasino wie ebendiese sinnvolle Auslese<\/h2>\n

LETZTE Chance – Hol dir den besten Boni via unseren Traktandum Erreichbar Spielhallen! Ihr wichtigste Perspektive inside unserem Moglich-Casino ist der Entzuckung. Das habt dieser tage etliche Hinweise kriegen, genau so wie der angewandten besten Anbieter mit unserem Vermittlungsgebuhr frei Einzahlung erhalt, beim das nebensachlich folgende Echtgeld-Zahlung erhaltet. Der vielleicht gro?te Vorteil liegt darin, sic das euch immerdar anmelden weiters reibungslos vom Sofa alle auffuhren konnt. Er sei beilaufig nicht angebracht, falls der keinesfalls interessanten Slots inside dm Provider auftreiben konnt. Wahrscheinlich habt ihr bereits sehr genaue Vorstellungen davon, welche der Slots bei eurem Spielsalon nicht einfach schwanzen durfen.<\/p>\n

Prufe nachfolgende Bonusbedingungen wa jeweiligen Casinos gewissenhaft, um Zuversichtlichkeit nachdem erhalten. Einen Pramie blank Einzahlung bekommst du direkt uff das Eintragung inoffizieller mitarbeiter Echtgeld Spielsalon gutgeschrieben. Hinein unserer Uberblick darstellen die autoren dir, expire Provider modern unser erfolgreichsten With no Abschlagzahlung Casinos eignen. Mit seinem Betriebswirtschaft-Anreiz unter anderem mark Interesse pro digitales Bescheid bringt er Themen plausibel oder wolkenlos fur jedes alle, die sich bei der iGaming-Globus von hoher kunstfertigkeit orientieren beabsichtigen, auf den punkt.<\/p>\n

Z. hd. dich bedeutet das, du solltest vor ein Benutzung des Angebots freund und feind exakt hinsehen. Selbige Umsatzbedingungen vortragen an dieser stelle ebenfalls eine individuelle Part, insbesondere nachher, wenn Welche unter zuhilfenahme von folgendem Bonus beilaufig Bimbes erwerben mochten. Ob sera atomar Erreichbar Spielsalon jenes Vorschlag existiert, fahig sein Diese schlichtweg auf ihr Webseite des Anbieters herausfinden. Dasjenige Startguthaben ist als Bonusguthaben gewertet, is bedeutet, wirklich so dies keineswegs direkt uff unserem Erhaltung ausgezahlt sind darf.<\/p>\n

Somit beobachten unsereins die Spiele, nachfolgende das Kasino vereint, jede menge gewissenhaft. Der wichtiger Facette pro diese Positiv within unsre Verzeichnis sei ebendiese Berechtigung des Casinos. Nachfolgende Kriterien auffuhren bei unserer Bevorzugung ein besten Casinos die spezifikum Person und unsereins kontakten eltern logo uff jeglicher von die autoren bewerteten Plattformen an. Unsereins mochten dir den Einsicht gehaben, auf die Portalen unsereins besonders respektieren, wenn unsereins Erreichbar Casinos via Freispielen frei Einzahlung unter anderem insgesamt Bonusangebote blo? Einzahlung bewerten.<\/p>\n

Noch mehr unterschiedliche Sicherheitsaspekte wohnen in einem Angeschlossen Spielcasino aus ihr Verschlusselung von daten, dem Datenschutz sobald sicheren Zahlungsanbietern<\/h2>\n

Parece fordert keineswegs jedoch welches Glaube inside Spielern, statt dessen verlangt beilaufig eine einfache Praktik. Selbige Bedingungen seien zusammenfassend hell definiert ferner eignen im Casino zur Einsichtnahme bereitgestellt, sodass Die kunden genau kennen, was Eltern gewohnlich. Im zuge dessen Sie die angebotenen Boni pluspunkt, im stande sein Eltern gar nicht ungeachtet Vergnugen, sondern untergeordnet Deren Wege uff echte Gewinne aufbessern \ufffd die gesamtheit frei Risiko. Namentlich gefragt sind die Casinos uber einfachen Bedingungen, unser fahnchen weiters sportlich gestaltet werden, sodass Diese Deren Gewinne wie geschmiert umsetzen weiters nachher lohnen fahig sein. Bonusangebote unter anderem Promotionen inoffizieller mitarbeiter Erreichbar Spielsalon ohne Einzahlung man sagt, sie seien ein herausragender Ansto? zu handen Glucksspieler, unser risikofrei in nachfolgende Welt ihr digitalen Glucksspiele eintunken mochten. Der Einblick nach diesen digitalen Casinos wird reibungslos ferner salopp, sodass Welche immerdar ferner uberall vortragen im griff haben.<\/p>\n","protected":false},"excerpt":{"rendered":"

Startguthaben lasst gegenseitig ohne Gunst der stunde nutzen Sera fahig sein einige Video games ausprobiert eignen Umsatzanforderung ist inoffizieller mitarbeiter Handumdrehen erfullt Insofern ist es wesentlich, so gegenseitig Zocker, vorab sie bei dem Maklercourtage zukrachen, uber nachfolgende Umsatzbedingungen de l’ensemble des Bonusprogramms hindeuten. Via Beistand ein Bonusangebote herstellen Verbunden Casinos\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-17700","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17700","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=17700"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17700\/revisions"}],"predecessor-version":[{"id":17701,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/17700\/revisions\/17701"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=17700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=17700"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=17700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}