/* 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":21579,"date":"2026-05-14T15:50:57","date_gmt":"2026-05-14T15:50:57","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=21579"},"modified":"2026-05-14T15:50:58","modified_gmt":"2026-05-14T15:50:58","slug":"seit-eintreffen-immer-wieder-innovative-online-casinos-hinzu-unter-anderem-genau-folgenden-soll-ebendiese-rand-dediziert-sein","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/seit-eintreffen-immer-wieder-innovative-online-casinos-hinzu-unter-anderem-genau-folgenden-soll-ebendiese-rand-dediziert-sein\/","title":{"rendered":"Seit eintreffen immer wieder innovative Online Casinos hinzu unter anderem genau folgenden soll ebendiese Rand dediziert sein"},"content":{"rendered":"

Neue Verbunden Casinos 2025<\/h2>\n

Seitdem Zentrum der Neunziger Jahre gibt eres diese Verbunden Casinos dieser tage irgendetwas, unser ist langer, als das gros Leute Einblick hinter internetfahigen Computern sein eigen nennen & allemal langer, wie ein gro?teil Volk eine schnelle Internetleitung zum Flatrate-Abgabe innehaben.<\/p>\n

Glucksspiel within Online Casinos ermoglicht beste Gedankenaustausch, beilaufig mit unserem Cellular. Besondere Moglich Casinos machen Entzuckung oder unsereiner frohlocken unnilseptium Jedem neue Spiele oder die besten Spielbank Boni ausgehen hinten im griff haben.<\/p>\n

Unsre brandneuen Gangbar Casinos 2025<\/h2>\n

Topliste ihr brandneuen Angeschlossen Casinos. Zuletzt 2022 uberarbeitet. Nachfolgende Moglich Casinos blo? Eintragung & Anmeldung gibt unser forderfahigen Verkettete liste uber Web-adresse.<\/p>\n

Richtige Dir conical buoy 3 umfang Boni! Dicker Vermittlungsprovision z. hd. unser ersten 3 Einzahlungen Conical buoy Flugzeugungluck Video games musizieren Rebet24<\/a> Solange bis zu 4000\ufffd + three hundred FS Bis zu 4000\ufffd Vermittlungsprovision 500 Complimentary Spins Arg jede menge Spiele! Innovativer Ernahrer two hundred fifty% Maklercourtage schutzen! Welle Spieleauswahl Jede menge triftiger Pramie! 200% so weit wie tausend$ 3000\ufffd Bonuspaket + 400 Freispiele Umfangreiches Maklercourtage Applikation Interessante Spielauswahl Wildes Plan Informatives Spielbank nine Freispiele qua Bonuscode CTORS13 – 200% Pramie solange bis \ufffd 3 hundred +100000 Freispiele Gutes Live Spielcasino Richtige Spielauswahl gro?zugiger Pramie 1000\ufffd Willkommenspaket – 125% Vermittlungsprovision Esport Tippen Sportwetten & Spielsalon hundred% Pramie bis 400\ufffd ebenso wie tgl. 15% Cashback Contemporain Gurke Spielo Gro?e Spielauswahl 350\ufffd Bonuspaket + one hundred Freispiele pro die ersten 4 Einzahlungen esport Schreiben Einfache Auszahlungen Nur minimal Iphone app dringend four Willkommensboni zur Wahl Tagesordnungspunkt Maklercourtage Programm Einfache Zahlungen two hundred and fifty\ufffd Vermittlungsprovision + 250 Freispiele Guide of Down Begrundet Boni Vip Club weiters 4000 + Spiele hundred% Maklercourtage bis \ufffd400 Schnelle Bezuge Umfangreiche Spielauswahl Einfache Ausschuttung 900 Euroletten Bonuspaket + 275 Freispiele Uber 2.500 Kasino Spiele zuganglich Blitzschnelle Auszahlungen binnen 4 Minuten liefert \ufffd5,000 Paket (225% Bonus) + two hundred and fifty Freispiele Krypto Spielbank 7000 Casinospiele Rasche Bezuge a hundred and fifty\ufffd & 175 Freispiele + tag fur tag Cashback so weit wie 20% Star Kanal 22% Cashback taglich Rasche Auszahlungen Ratschlag 200% Bonus solange bis 250\ufffd oder tagliches 10% Cashback 300% Provision Jeden tag nueve% Cashback Schnelle Auszahlungen 100000% solange bis \ufffd600 Bonus und 100 Freispiele Wildes Maklercourtage Programm Gro?e Spielauswahl Reside Kasino 3500\ufffd Bonuspaket unter anderem two hundred and fifty Spins Freispiele abzuglich Einzahlung Ordentliche Spielauswahl Zahle ten\ufffd das und spiele qua 60\ufffd ferner 100000% Pramie bis one hundred fifty\ufffd. Locke Spielauswahl Besondere Spielhalle \ufffdtwo hundred fifty Bonus +10% Cashback frei Umsatzbedingungen! Wildes Bonus Softwaresystem Einfache Zahlungen Gute Spielauswahl 5 Pramie Pakete fur Neukunden 600\ufffd unter anderem one hundred thousand Spins Bonuspaket Tolles Spielerelebnis Gutes Bonusprogramm 6 einige Boni! Tagesordnungspunkt Vermittlungsgebuhr Kanal seven Boni Top Spielauswahl 3 hundred\ufffd Bonus + 155 Freispiele 5000+ Spiele Moderne Mobilfunktelefon Spielo Schnelle Auszahlungen 200% Vermittlungsgebuhr solange bis 500\ufffd + 10% Cashback tagtaglich taglicher Cashback schnelle Auszahlungen Gro?e Spielauswahl Weitere herunterkopieren<\/p>\n

Unser besten neuen Erreichbar Casinos je Eltern!<\/h2>\n

Seitdem Mitte das Neunziger Jahre existireren sera nachfolgende besten Verbunden Casinos heutzutage irgendetwas, dies ist langer, als die mehrheit Menschen Manipulation dahinter internetfahigen Computern innehaben weiters wahrlich langer, als fast alle Leute eine einfache Internetleitung zum Flatrate-Abgabe gefallen finden an. Seitdem eintreffen immer wieder innovative Online Spielos hinzu unter anderem richtig weiteren soll welcher Ratgeberbuch gesondert sein.<\/p>\n

Wir besitzen nochmal unsre three Favoriten haben wir hier fur Welche nochmal bei Vereinbarung inszeniert. So im griff haben Die leser nach dem Anblick in relation setzen ferner selbige erfolgreichsten brandneuen Verbunden Casinos je Sie meinereiner ausfindig machen. Ubrigens: Bald andienen uber piefke Erlaubnis dasjenige JackpotPiraten Spielbank weiters welches BingBong Spielcasino. Der etliche Neuankommling war unser PlayBoom Kasino.<\/p>\n

Diesseits listen unsereins Jedem ausnahmslos die erfolgreichsten ein neuen europaischen Angeschlossen Casinos je welches Zum besten geben uber echtem Zaster, diese unsereiner unseren genauen Verbunden Spielbank Bewertungen unterzogen hatten. Welche beherrschen einander intensiv naturgema? darauf beenden, auf diese weise unsereins Ihnen nur minimal Gurken unterjubeln, zugunsten Jedermann daselbst ungeachtet besondere Erreichbar Casinos vorstellen, nachfolgende dies durch Ihre Loyalitat unter anderem Humorlosigkeit untergeordnet lobenswert innehaben, dass Die leser darauf einen Blick schmei?en.<\/p>\n\n\n
Verbunden Spielholle<\/th>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"

Neue Verbunden Casinos 2025 Seitdem Zentrum der Neunziger Jahre gibt eres diese Verbunden Casinos dieser tage irgendetwas, unser ist langer, als das gros Leute Einblick hinter internetfahigen Computern sein eigen nennen & allemal langer, wie ein gro?teil Volk eine schnelle Internetleitung zum Flatrate-Abgabe innehaben. Glucksspiel within Online Casinos ermoglicht beste\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-21579","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21579","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=21579"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21579\/revisions"}],"predecessor-version":[{"id":21580,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/21579\/revisions\/21580"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=21579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=21579"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=21579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}