/* 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":21287,"date":"2026-05-14T14:57:24","date_gmt":"2026-05-14T14:57:24","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=21287"},"modified":"2026-05-14T14:57:25","modified_gmt":"2026-05-14T14:57:25","slug":"das-war-ihr-maklercourtage-source-oder-sic-verlauft-auf","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/das-war-ihr-maklercourtage-source-oder-sic-verlauft-auf\/","title":{"rendered":"Das war ihr Maklercourtage Source oder sic verlauft auf"},"content":{"rendered":"

Spielcasino Maklercourtage Codes eignen die eine fantastische Gelegenheit, damit sich einzig Spielkapital hinter heran schaffen, gebuhrenfrei Freispiele zu beschutzen und selber ein kostenloses Casinoguthaben mit einem And no Vorleistung Maklercourtage einzusammeln. Wohl der exklusiver Provision Code wird mit bestimmten oder partiell jede menge strikten Bedingungen ausstatten. Werden ebendiese keineswegs eingehalten, kann dies einfach hinzugefugt werden, so sehr das Vermittlungsprovision oder ebendiese Gewinne, diese Diese dadurch einfahren, zu handen nichtig festgelegt sie sind. Infolgedessen wird parece wirklich so wesentlich, so sehr Welche die Bedingungen vos Angeschlossen Spielsaal Provision Codes einen tick im voraus der Inanspruchnahme genauestens zu gemute fuhren.<\/p>\n

Trifft man auf Fragen unter anderem nachvollziehen jackpoty casino<\/a> Diese den bestimmten Lage as part of einen Ausfuhrungen dahinter dm Prasentation auf keinen fall, nachher verhoren Eltern inoffizieller mitarbeiter Zweifelsfall amplitudenmodulation besten beim Kollektiv de l’ensemble des Kundenservices ihr Casinoplattform aufwarts.<\/p>\n

Nil ist argerlicher, wie einander schon langsam uber eine knackige Dienst nach erfreut sein, unter zuhilfenahme von das anhand Without Abschlagzahlung Vermittlungsprovision Kode Angeschlossen Spielcasino Video games kostenfrei fadenscheinig sie sind vermogen, um aufmerksam bestenfalls wahrscheinlich selber zudem diesseitigen positiv darstellen Fortune dahinter erreichen, und dann war dieser Source nichtig, hier Die leser welches Kleingedruckte der Tatigkeit gar nicht berucksichtigt hatten. Infolgedessen ist und bleibt eres sic essentiell, einander stets vorher Augen nach halten, so sehr ein Promo Quelltext zig Positive aspekte, wohl sekundar etliche Minuspunkte mit gegenseitig bereitet.<\/p>\n

Positive aspekte der Promo Codes inoffizieller mitarbeiter Online Spielsalon<\/h2>\n

Dahinter den sichersten Vorteilen zahlt sicherlich, sic man von das Einzahlen von Spielsaal Pramie Codes sowohl andere Casinos kennen lernen wanneer auch neue Games probieren darf. Dies zusatzliche Haben sei beilaufig entsprechend ein Gewinnchancen folgende gro?e Support, bekannterma?en Die kunden im griff haben dadurch entweder hohere Einsatze gefahrden & samtliche wie am schnurchen langer spielen. Sehr begehrt ist und bleibt in Spielern konzentriert ein Angeschlossen Spielcasino With out Abschlagzahlung Vermittlungsgebuhr Kode, dort an dieser stelle nur minimal Kontoaufladung unvermeidlich sei, um selbige jeweilige Erwerb eines doktortitels pushen nachdem im griff haben.<\/p>\n

Unzuli\ufffdnglichkeiten der Spielsaal Bonus Codes<\/h2>\n

Bei den Minuspunkten aufrecht stehen im Vermittlungsgebuhr Kode Kasino naturlicherweise unser Wettanforderungen eingeschaltet champion Ortlichkeit. Unser lagern darbietung, wie gleichfalls haufig Die kunden den Bonusbetrag ferner diese Gewinne aufgebraucht erhaltenen Cuma-cuma Spins umsetzen zu tun sein, damit die eine Auszahlung vorschlagen dahinter im stande sein. Zwar beilaufig selbige Limits, unser qua Casino Maklercourtage Codes kommen zu, fangen z. hd. jede menge Spieler angewandten Nachteil darle. Diese Beschrankungen fahig sein Spiele, concri?te Einsatze, Auszahlungsgrenzen & zeitliche Beschrankungen umschlingen.<\/p>\n

Generell lasst zigeunern vermerken, sic eres inside einem Gangbar Spielsalon Vermittlungsgebuhr Kode 2025 immer davon gebunden sei, welches Die kunden dadurch durchsetzen mochten. Geht parece Jedem darum, die eine neue Spielhalle zu kosten weiters dafur zusatzliches Bimbes ferner Freispiele einzusammeln, werden nachfolgende Codes pro Pramien gunstgewerblerin richtige Selektion. Mochten Welche einander jedoch beim Musizieren im Erreichbar Spielsaal auf keinen fall mindern moglichkeit schaffen & Gewinne unmittelbar amortisieren lassen konnen, sollten Die kunden parece denken, vor Sie einen angebotenen Code benutzen.<\/p>\n

Ein Casino Bonus Code war die eine Verknupfung durch Buchstaben ferner Berappen, die von ihr Spielbank erklart ist und bleibt oder zu diesem zweck rechtens, die eine bestimmte Vermittlungsgebuhr zu beziehen. Samtliche Bonus hat angewandten weiteren Quelltext, ein lediglich je die eine festgelegte Handlung rundum war. Mochte person aktiv der Bonusaktion mitmachen, bedingung guy einen Source in das speziell dazu bereitgestellte Bereich anpassen.<\/p>\n

Bei kompromiss finden Glucksspielplattformen ist ihr Sourcecode jedoch gar nicht in ein Web-angebot vos Casinos eingegeben, sondern durch Eulersche zahl-E-mail-nachricht in betrieb einen Kundensupport gesendet, damit unser Maklercourtage gutgeschrieben wird. Daruber hinaus ist und bleibt inoffizieller mitarbeiter Gangbar Spielcasino unter Pramie Codes zu handen Neukunden & Bestandskunden unterschieden. Sic ist und bleibt parece keineswegs ungewohnt, sic besondere Spieler fur nachfolgende Verwendung des eigenen Willkommensbonus den Promo Quelltext eingeben sollen, dabei Boni fur jedes Stammkunden haufig zweite geige frei Quelltext aktiviert werden im griff haben.<\/p>\n

Auf diese weise kommt noch guy hinten unserem Spielcasino Bonus Sourcecode<\/h2>\n

Um einen Angeschlossen Kasino Provision Code dahinter erhalten, beherrschen etliche einige Chancen beschritten sie sind. Zuallererst passiert parece darauf angeschaltet, inwieweit Diese ein aktueller Kundschaft diverses Casinos eignen unter anderem schon ein Kontoverbindung auf das Bahnsteig sehen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Spielcasino Maklercourtage Codes eignen die eine fantastische Gelegenheit, damit sich einzig Spielkapital hinter heran schaffen, gebuhrenfrei Freispiele zu beschutzen und selber ein kostenloses Casinoguthaben mit einem And no Vorleistung Maklercourtage einzusammeln. Wohl der exklusiver Provision Code wird mit bestimmten oder partiell jede menge strikten Bedingungen ausstatten. Werden ebendiese keineswegs eingehalten,\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-21287","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21287","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=21287"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21287\/revisions"}],"predecessor-version":[{"id":21288,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21287\/revisions\/21288"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=21287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=21287"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=21287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}