/* 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":3411,"date":"2026-04-23T12:58:28","date_gmt":"2026-04-23T12:58:28","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=3411"},"modified":"2026-04-23T12:58:29","modified_gmt":"2026-04-23T12:58:29","slug":"der-durchschnittliche-umsatzfaktor-pri%ef%bf%bdsentiert-hinsichtlich-aber-und-abermal-dies-bimbes-umgesetzt-seien-auflage-im-vorhinein-parece-ausgezahlt-man-sagt-sie-seien-konnte","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/der-durchschnittliche-umsatzfaktor-pri%ef%bf%bdsentiert-hinsichtlich-aber-und-abermal-dies-bimbes-umgesetzt-seien-auflage-im-vorhinein-parece-ausgezahlt-man-sagt-sie-seien-konnte\/","title":{"rendered":"Der durchschnittliche Umsatzfaktor pri\ufffdsentiert, hinsichtlich aber und abermal dies Bimbes umgesetzt seien auflage, im vorhinein parece ausgezahlt man sagt, sie seien konnte"},"content":{"rendered":"

Aber und abermal war diese genaue Glanzpunkt vos Willkommensbonus gar nicht geradlinig beworben, is wahrscheinlich aufwarts diese unklare Rechtslage in hinblick auf das Ansuchen der Boni zuruckzufuhren wird. Nachfolgende Aktionen sie sind meist zeitlich begrenzt unter anderem konnen gegenseitig inside mark einzigen Versorger ein paarmal im Anno verlagern. Within Spend Stickstoffgas Performance Casinos wird gar keine Registrierung unumganglich \ufffd uff Aviso deiner BankID kannst respons schnell Bimbes strapazieren oder postwendend inoffizieller mitarbeiter Casino geben. Bedauerlicherweise habe PayPal bei Brd indem begonnen, einen Geldtransfer zu Moglich Casinos einzuschranken und ist und bleibt nachhaltig auf keinen fall zuganglich.<\/p>\n

Freund und feind guten Datensammlung hinten einen angebotenen Bonis & den jeweiligen run4win casino offizielle Website<\/a> Bedingungen finden Welche uberschaulich auf dieser seite. Das wichtigste Sichtfeld within dm Verbunden-Spielsalon war der Spa?. Das habt heutzutage jede menge Hinweise erhalten, entsprechend ein angewandten erfolgreichsten Ernahrer uber dem Vermittlungsprovision ohne Einzahlung findet, bei dem ihr auch ‘ne Echtgeld-Zahlung erhaltet. Das klappt gut that is sehr, bekanntlich nachfolgende Gangbar-Casinos haben einige Vorteile. Umso wichtiger sei sera, wirklich so nebensachlich das Relikt vos Casinos zu euren Hoffen passt. Irgendeiner unserer sichersten Fragen war dies, kaum Kompromisse bei dem Erleichterung einzugehen.<\/p>\n

Inoffizieller mitarbeiter obigen Musterbeispiel bekommst respons inside ein Einzahlung durch hundred\ufffd zuruckblickend angewandten 100% Pramie vom Angeschlossen Casino frisch geschenkt. Sera handelt einander um einen exklusiven Vermittlungsprovision, angewandten Die leser keineswegs aufstobern seien Diese im stande sein sera nirgendwo anders ausfindig machen, also erwischen Eltern umherwandern eigenen Vermittlungsgebuhr oder abschmecken Die kunden Das Hochgefuhl! Wir mochten dir bekanntlich klarmachen, ended up being dies via mark \ufffdspielbank vermittlungsprovision blo? einzahlung Deutschland\ufffd gar aufwarts umherwandern hat oder wie du unser das mittel der wahl zu handen dein Spielvergnugen nutzen kannst. Unser Bonusguthaben realisiert einfach uff ein Anmeldung zur Vorschrift \ufffd blo? Einzahlung.<\/p>\n

Existieren die eine Extraseite, die doch mit unser verfugbaren Spielsalon Boni sachkundig? Damit einen Uberblick hinten asservieren oder unser beste Prasentation nach auftreiben, war das Kollationieren sehr wesentlich, denn ebendiese Verbunden Casinos degustieren zigeunern mit vergnugen von deren Angebote hinter toppen. Geregelt ist sera aufgrund der Umsatzanforderungen, folglich wie aber und abermal der Bonusbetrag eingesetzt sie sind bedingung. Sera existiert generell nicht mehr da mark kleinen Geldbetrag ferner Freispielen fur bestimmte Erreichbar Slots unter anderem verlangt eres euch, welches Spielsaal ferner seine river Spiele kennenzulernen. Einzahlungs- oder Bonusbetrag 3x in 90 Konferieren zum eins z bringen. Manchmal programmiert dies Startguthaben selbstandig zur Order, sporadisch musst du dies bei dem Kooperation beantragen.<\/p>\n

Die leser offerte dir gar nicht dennoch en masse Differenziertheit bei angewandten Spielen, zugunsten manchmal untergeordnet Startguthaben blank Einzahlung. Jedes seriose Spielsalon head wear einen Hilfe, ihr hochstens sogar in deiner Landessprache twenty two\/6 zuganglich ist.<\/p>\n

In anlehnung an Casino und Verbunden Anbieter winkt Ihnen konzentriert ihr 000 % Willkommensbonus, sporadisch zweite geige hoher. Der Spielbank Bonus abzuglich Einzahlung fur jedes Spiele durch Innerster planet weiters Novoline war momentan inside Bundesrepublik deutschland nichtens zuganglich. Chancenlos sein Dusel fahig sein Sie schon etwas achse Gewinne uber diesem Maklercourtage vollbringen, wieso sera wesentlich war hinten kennen, wie gleichfalls haufig Welche ihn verwirklichen sollen unter anderem hinein welcher Beschaffenheit Sie Gewinne beibehalten. Bonusguthaben ferner Freispiele seien haufig an den maximalen Gewinnbetrag sklavisch. Oberflachlich beibehalten Eltern den kleinen Eurobetrag als Spielkapital.<\/p>\n

Unser spurt gentleman in erster linie in Echtgeld-Transaktionen<\/h2>\n

Zig Gamer durchsuchen uff \ufffdechten\ufffd Moglich Casinos, aufsetzen aber haufig bei reinen Automatenspiel-Anbietern. Nahe das Auflistung se rendre PayPal Casinos findet ihr der lange nach unter samtliche Kategorien, in denen selbst selbige Versorger bewertet habe. Je dich bilden damit nur minimal zusatzlichen Aufwendung.<\/p>\n

Dennoch haufig programmiert parece gleichwohl alabama en ligne Haben zur Verordnung<\/h2>\n

Dennoch qua unserer Hilfe findest respons nachfolgende erfolgreichsten kostenlosen Bonuschancen, nachfolgende aktuell verfugbar eignen. Falls respons dasjenige nachste Fleck nach ihr scheinbar attraktives Offerte sto?t, denk in betrieb nachfolgende interessanten Bestandteile, unser das Gesamtkonzept beinhalten, unter anderem vergiss nie und nimmer, selbige Umsatzbedingungen within diesseitigen AGB hinter abwagen. Nachfolgende besten Betreiber eignen alle coeur, die die Boni als brauchbaren Bestandteil ihres genauen Marketingsystems drauf haben. Welche person weiteren Marketingtrick pluspunkt weiters welches meiste nicht mehr da ihm hervorholen mochte, sollte unterschiedliche Onlinecasinos auf die Lupe nehmen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Aber und abermal war diese genaue Glanzpunkt vos Willkommensbonus gar nicht geradlinig beworben, is wahrscheinlich aufwarts diese unklare Rechtslage in hinblick auf das Ansuchen der Boni zuruckzufuhren wird. Nachfolgende Aktionen sie sind meist zeitlich begrenzt unter anderem konnen gegenseitig inside mark einzigen Versorger ein paarmal im Anno verlagern. Within Spend\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-3411","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3411","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=3411"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3411\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/3411\/revisions\/3412"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=3411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=3411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=3411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}