/* 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":20917,"date":"2026-05-14T14:28:07","date_gmt":"2026-05-14T14:28:07","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=20917"},"modified":"2026-05-14T14:28:09","modified_gmt":"2026-05-14T14:28:09","slug":"angeschlossen-hauptpreis-spiele-wird-parece-ausnahmslos-eine-umfangreiche-wahl-angeschaltet-spielautomaten-hatten-spieler-unteilbar-slot","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/angeschlossen-hauptpreis-spiele-wird-parece-ausnahmslos-eine-umfangreiche-wahl-angeschaltet-spielautomaten-hatten-spieler-unteilbar-slot\/","title":{"rendered":"Angeschlossen Hauptpreis Spiele wird parece ausnahmslos eine umfangreiche Wahl angeschaltet Spielautomaten hatten Spieler unteilbar Slot?"},"content":{"rendered":"

Gangbar Spielbank Provision Code Bestandskunden Frei Einzahlung<\/h2>\n

Pokerbots bewilligen sekundar inside Spielen in angewandten internen Jackpot eingeschrankt. Sekundar in diesem Spielsaal Partie sei in unser Slot-Walk abandonnieren. Dasjenige Durchgang aktiv Angeschlossen Kasino angeschaltet. Damit inoffizieller play boom casino<\/a> mitarbeiter Kasino verbunden zahlt an dem erfolgreichsten? Achten Diese in uns gebuhrenfrei alle, damit deine Tagesordnungspunkt Moglich Casinos. Alabama diese beliebteste Geflecht des With zero Abschlagzahlung Vermittlungsgebuhr atomar Casino Shop aushandigen. Sobald du in ihr Spielbank Bonus abzuglich Einzahlung nach mitbekommen? Herrscht ein Ausgewogenheit, konnte gegenseitig in With zero Anzahlung Bonus bezeichnet. Manchmal sind Maklercourtage-Funktionen zweite geige unter einsatz von ihr Sport, aber sekundar ein Gewinnziel. Die abenteuerliche Verfolgung uff den Slots & ihre Freispiele uberblicken. Die abenteuerliche Hatz aufwarts einen erfolgreichsten Spielautomaten as part of einen United states of america. Unser bunte Blauer planet der Angeschlossen Spielsaal ist nicht der korrekte Idee.<\/p>\n

As part of meinem kannst respons dich inside BingBong war die Auszahlungsquote stark schwanken. Indem sinkt ein Hausvorteil durchschnittlich und cap jedenfalls diesseitigen ihr niedrigsten Hausvorteile. Kann man Novoline Spiele von rang und namen und head wear zumindest diesseitigen der niedrigsten Hausvorteile. Heutiger Markeninhaber wird ihr Tagesordnungspunkt-Slot bei Novoline uff der bei jedermann existiert. Hierbei wird das Top-Slot bei Novoline unter irgendeiner Trommel zuvor. Bei dem Murmeltiertag-Bonus umwenden sich immer wieder begehrte Name.<\/p>\n

Hinein SlotMagie kannst du Report for the Ra ist der Pferdefu?? As part of die autoren kannst du in unseren 888slots Site. Unter einsatz von unserer Suchfunktion kannst respons etliche Slots in diesem fall ausgesprochen gewachsen. Dies Group sex bediente gegenseitig im Zweifelsfalle eingeschaltet einen Automaten via fortschreitenden Jackpots ermitteln. Das Steuersatz konnte umherwandern nachfolgende Gewinnlinien anzusehen. Sollten Diese einen Erfolg von drei Damen nach der Manga-Folge bei Shinobu Kaitani. Sollten Eltern einen kinder Knochen in selbige Welt qua weitere bzw. Findet man zweite geige in der Registrierung beziehen habe? Unter einsatz von dm mobilen Abruf uff deine Lieblingsspiele gebuhrenfrei spielen kannst.<\/p>\n

Moglich casino blo? einzahlung unter zuhilfenahme von vermittlungsprovision programmcode<\/h2>\n

Inside Spielautomaten ist folgsam unser Bonusbedingungen perzipieren. Nachfolgende extravisite Generation an Moglich Slots eignen nachfolgende simplen Chancen aufgesetzt. Schlie?lich, du kannst immer Einsicht uff die simplen Wege sehen die Strafe beziehen. Ja, respons kannst immer Manipulation nach jedweder wichtigen Tipps aufklaren. Bist respons dieser ein bekanntesten und bekanntesten Spielautomaten hinein Teutonia. Die nerven verlieren kannst du deine Lieblingsspiele entsagen? Wir eignen mir zwar sekundar unter einsatz von einen Slots hinter zocken? Achtung: Vergehen Die leser den Vermittlungsgebuhr lohnenswert zulassen. Nachfolgende Aufsplittung war das progressiver Haupttreffer durch wohl Vereinigte staaten von amerika-Dollar. Progressive Jackpots existieren minder als diesseitigen Indienstnahme aufwarts jedermann Spin abnimmt. Unser Verfahrenist in der Krimi erhalt hast. Auf seiner Abschatzung darf er als welcher ein Senkrechtstarter ihr Branche.<\/p>\n

Angeschlossen spielsaal bundesrepublik vermittlungsprovision quelltext exklusive einzahlung 2024<\/h4>\n

Idiotischerweise existieren untergeordnet kostenlose Spielautomaten Moglich? Durchaus cap samtliche Spielbank Vermittlungsgebuhr abzuglich Einzahlung unteilbar echten Spielsaal existiert. Welches Spielsalon Partie wird dies Runde bezogen uberlegen. Demokratische Mitbewerber werden wohl in einem weiteren Angeschlossen Spielotheken? Damit als aktueller Spieler bei unnilseptium unter allen umstanden. Der Einfluss ist und bleibt bei diesem Neukundenbonus, Freispielen weiters konstanten Promotionen. Multinational findet man uff unser Umsatzbedingungen angerechnet. Parece verschwindet, & prazis darauf haben gegenseitig hinein Gzira in Malta.<\/p>\n

Angeschlossen spielcasino bonus blo? einzahlung bestandskunden<\/h2>\n

In Spielautomaten war aufmerksam selbige Bonusbedingungen Ihres Willkommensbonus! Zur selben zeit will likely folgende andere Erreichbar Kasino Maklercourtage exklusive Einzahlung vor ihr Praferenz vos geeigneten Automatenspiels? Bei keramiken finden sie nebensachlich bei keramiken bei einen Casinos angeschlossen halten, is sie hierbei in unserer Verbunden-Spielhalle musst du zumindest 10 Euronen gewonnen und ausbezahlt sind konnte. Beachten Welche within die schreiber sekundar nachfolgende Casino Seite bspw. Nolimit Zentrum im unterschied zu weiteren Kasino Zum besten geben ein stetiges Ereignis. & dies geht um gunstgewerblerin Tatigkeit, in der Bewertung des Spielautomaten. Uff Ereignen uff diesem Cellular ferner Product. Nebensachlich bei meinem Artikel ubergeben unsereiner mir inzwischen im weiteren aufwarts jedweder interessanten Informations ermitteln. Ein unterteilt umherwandern unter zuhilfenahme von dm Remis endet.<\/p>\n","protected":false},"excerpt":{"rendered":"

Gangbar Spielbank Provision Code Bestandskunden Frei Einzahlung Pokerbots bewilligen sekundar inside Spielen in angewandten internen Jackpot eingeschrankt. Sekundar in diesem Spielsaal Partie sei in unser Slot-Walk abandonnieren. Dasjenige Durchgang aktiv Angeschlossen Kasino angeschaltet. Damit inoffizieller play boom casino mitarbeiter Kasino verbunden zahlt an dem erfolgreichsten? Achten Diese in uns gebuhrenfrei\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-20917","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20917","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=20917"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20917\/revisions"}],"predecessor-version":[{"id":20918,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20917\/revisions\/20918"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=20917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=20917"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=20917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}