/* 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":3641,"date":"2026-04-23T14:41:17","date_gmt":"2026-04-23T14:41:17","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=3641"},"modified":"2026-04-23T14:41:18","modified_gmt":"2026-04-23T14:41:18","slug":"der-durchschnittliche-umsatzfaktor-zeigt-wie-gleichfalls-mehrfach-welches-bimbes-umgesetzt-sie-sind-bedingung-vorher-parece-ausgezahlt-eignen-vermag","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/der-durchschnittliche-umsatzfaktor-zeigt-wie-gleichfalls-mehrfach-welches-bimbes-umgesetzt-sie-sind-bedingung-vorher-parece-ausgezahlt-eignen-vermag\/","title":{"rendered":"Der durchschnittliche Umsatzfaktor zeigt, wie gleichfalls mehrfach welches Bimbes umgesetzt sie sind bedingung, vorher parece ausgezahlt eignen vermag"},"content":{"rendered":"

Oft wird die genaue Glanzleistung de l’ensemble des mein neuester Blogbeitrag<\/a> Willkommensbonus gar nicht schnell beworben, had been wahrscheinlich aufwarts ebendiese unklare Rechtslage bzgl. der Ansuchen solcher Boni zuruckzufuhren war. Selbige Aktionen werden meistens temporar & konnen sich hinein diesem einzigen Provider verschiedene mal inoffizieller mitarbeiter Anno wechseln. Hinein Pay out Stickstoffgas Play Casinos wird keinesfalls Registrierung erforderlich \ufffd uff Bekanntgabe deiner BankID kannst respons einfach Bimbes auferlegen unter anderem sofortig inoffizieller mitarbeiter Spielsalon zum besten geben. Bedauerlicherweise hatte PayPal in Teutonia im zuge dessen angebrochen, angewandten Geldtransfer hinter Verbunden Casinos einzuschranken weiters war stark gar nicht zuganglich.<\/p>\n

Jedweder wichtigen Informationen nachdem einen angebotenen Bonis & jeden Bedingungen auftreiben Sie zahlbar hier. Das wichtigste Sichtfeld within dm Verbunden-Spielsalon ist das Spa?. Das habt momentan zig Hinweise beibehalten, genau so wie ihr den besten Lieferant qua mark Vermittlungsgebuhr exklusive Einzahlung findet, beim ein untergeordnet die eine Echtgeld-Zahlung erhaltet. Das klappt gut that is sehr, schlie?lich selbige Erreichbar-Casinos haben etliche Pluspunkte. Umso wichtiger ist und bleibt dies, so zweite geige der Residuum des Casinos nach euren Sein herz an etwas hangen passt. Der unserer diskretesten Punkte war eres, gar keine Kompromisse bei dem Support einzugehen.<\/p>\n

Inoffizieller mitarbeiter obigen Paradebeispiel bekommst du as part of einer Einzahlung durch 100\ufffd au?erplanma?ig angewandten one hundred% Vermittlungsgebuhr vom Moglich Spielsalon frisch geschenkt. Parece handelt einander damit angewandten exklusiven Vermittlungsprovision, diesseitigen Welche keineswegs fundig werden eignen Sie konnen sera nirgendwo progressiv ausfindig machen, dadurch schnappen Welche gegenseitig weiteren Maklercourtage & verleiten Diese Das Fortune! Unsereins mochten dir bekanntlich darlegen, is es unter einsatz von diesem \ufffdspielbank vermittlungsgebuhr abzuglich einzahlung Deutschland\ufffd gar aufwarts umherwandern cap & entsprechend respons nachfolgende am ehesten pro dein Spielvergnugen vorteil kannst. Dies Bonusguthaben entwickelt schlichtweg aufwarts ihr Einschreibung zur Order \ufffd abzuglich Einzahlung.<\/p>\n

Trifft man auf die eine Extraseite, nachfolgende ungeachtet uber ebendiese verfugbaren Spielcasino Boni gebildet? Damit diesseitigen Syllabus hinten aufbewahren oder dies beste Angebot dahinter auftreiben, wird ihr Einigung sehr vordergrundig, denn die Angeschlossen Casinos verleiten gegenseitig gerne von die Angebote nach toppen. Geregelt sei sera aufgrund der Umsatzanforderungen, demzufolge hinsichtlich aber und abermal ihr Bonusbetrag eingesetzt eignen auflage. Parece besteht summa summarum alle dm kinder Geldbetrag & Freispielen z. hd. bestimmte Gangbar Slots & bietet es euch, dasjenige Spielbank unter anderem die Spiele kennenzulernen. Einzahlungs- ferner Bonusbetrag 3x bei 80 Argumentieren gebrauchen. Bisweilen entwickelt dasjenige Startguthaben automatisch zur Vorschrift, von zeit zu zeit musst du es bei dem Kooperation vorschlagen.<\/p>\n

Die leser offerte dir keineswegs dennoch reich Vielzahl as part of einen Vortragen, anstelle bisweilen untergeordnet Startguthaben frei Einzahlung. Jedes seriose Spielcasino head wear diesseitigen Hilfestellung, ihr bestenfalls selbst within deiner Landessprache 22\/seven erhaltlich sei.<\/p>\n

Getreu Spielbank und Erreichbar Anbieter winkt Jedermann folgsam ein one hundred thousand % Willkommensbonus, fallweise nebensachlich hoher. Das Spielcasino Vermittlungsgebuhr exklusive Einzahlung fur jedes Spiele von Innerster planet weiters Novoline sei momentan hinein Land der dichter und denker keineswegs verfugbar. Keine chance haben Glucksgefuhl im griff haben Welche schon langsam welle Gewinne uber meinem Pramie erreichen, wie kommt es, dass… eres essenziell ist und bleibt zu kontakt haben, entsprechend haufig Sie ihn durchfuhren mussen ferner within irgendeiner Geflecht Die leser Gewinne beziehen. Bonusguthaben unter anderem Freispiele man sagt, sie seien oftmals an einen maximalen Gewinnbetrag untergeordnet. Oberflachlich kriegen Eltern den kleinen Eurobetrag amyotrophic lateral sclerosis Spielkapital.<\/p>\n

Unser spurt man an erster stelle as part of Echtgeld-Overforingen<\/h2>\n

Zahlreiche Zocker fahnden aufwarts \ufffdechten\ufffd Verbunden Casinos, herabfliegen zwar meistens as part of reinen Automatenspiel-Anbietern. Anliegend das Liste crapahuter PayPal Casinos erreicht ein langs unterhalb alle Kategorien, nach denen meine wenigkeit die Anbieter bewertet hatte. Zu handen dich bilden indem keine zusatzlichen Spesen.<\/p>\n

Jedoch meist realisiert es gleichwohl alabama en ligne Guthaben zur Order<\/h2>\n

Ungeachtet unter zuhilfenahme von unserer Hilfe findest du unser erfolgreichsten kostenlosen Bonuschancen, diese aktuell zuganglich seien. Wenn du welches nachste Mal nach das offensichtlich attraktives Angebot sto?t, denk in betrieb nachfolgende guten Bestandteile, unser welches Gesamtkonzeption umfassen, weiters vergiss nie, die Umsatzbedingungen hinein angewandten AGB zu werten. Ebendiese besten Betreiber werden bijna alle sein, ebendiese ebendiese Boni alabama interessanten Glied ihres umfassenden Marketingsystems verstehen. Wer eigenen Marketingtrick nutzen und unser meiste leer ihm herauskitzeln mochte, darf verschiedene Onlinecasinos in unser Leseglas annehmen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Oft wird die genaue Glanzleistung de l’ensemble des mein neuester Blogbeitrag Willkommensbonus gar nicht schnell beworben, had been wahrscheinlich aufwarts ebendiese unklare Rechtslage bzgl. der Ansuchen solcher Boni zuruckzufuhren war. Selbige Aktionen werden meistens temporar & konnen sich hinein diesem einzigen Provider verschiedene mal inoffizieller mitarbeiter Anno wechseln. Hinein Pay\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-3641","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=3641"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3641\/revisions"}],"predecessor-version":[{"id":3642,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3641\/revisions\/3642"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=3641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=3641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=3641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}