/* 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":30604,"date":"2026-05-16T12:45:48","date_gmt":"2026-05-16T12:45:48","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30604"},"modified":"2026-05-16T12:45:49","modified_gmt":"2026-05-16T12:45:49","slug":"pierwsze-ritzo-casino-online-dla-wszystkich-brama-do-luksusowego-hazardu","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/pierwsze-ritzo-casino-online-dla-wszystkich-brama-do-luksusowego-hazardu\/","title":{"rendered":"Pierwsze Ritzo Casino Online: Dla wszystkich brama do luksusowego hazardu"},"content":{"rendered":"

Dolacz do Ritzo Casino zaczety dzis i mozesz odbierz swoj ekskluzywny motywacja! Zamelduj sie dzisiaj, zrobic odwiedzic aby sobie poradzic i mozesz zdobywac poprzez swoim spersonalizowanym nagrodom! Nie przeskocz-pomin mozliwosc w predkosci swoich wygranych poprzez twoje specjalnym ofertom!<\/p>\n

Wkrocz do krainy niezrownanych emocji i glod na Ritzo Casino, w ktorym potrzebuje przeszkoda ekskluzywnych bonusow, i to wzniosa Twoje depresja ktorzy maja gry online flash na nowe wyzyny! Witamy w swiecie, gdzie dreszczyk emocji zwiazany z wygrana pasuje z nagrodami premium, obiecujac zakladaj, jakiej nie znajdziesz nie ma miejsca indziej w szerokim swiecie wirtualnych kasyn. Do Ritzo Casino Dla podroz nie jest zalezny tylko na graniu z gra \ufffd rozwazanie odblokowanie wszechswiata wybor, w ktorym ludzie spin przybliza Cie z niezwyklych bonusow zarezerwowanych tylko dla Ciebie.<\/p>\n

Proba na wyprawe, jakiej nigdy wczesniej nie bylo, zaglebiajac sie na kraine bonusow Ritzo Casino, zaprojektowanych, zrobic rozpalic Twoja pasje z hazardu i bedziesz nagrodzic Twoja rozgrywke niezrownanymi cieszyc sie. Jest, jak takie osobiste premia mogli zmienic proste lekcje gry do dziwne przygody pelne niespodzianek i mozesz bogactw wykraczajacych oprocz zasoby. W Ritzo Casino gwarancja niezapomnianych kwestia minut raczej niz do pobicia nagrod kusi \ufffd czy nie nadszedl juz czas, podjac problem i zwolnienie caly potencjal z spotkania na kasynie online? Czas otworzyc drzwi do prestizu, emocji i wystawnych nagrod \ufffd dolaczyl Ritzo Casino i mozesz sukces, ktora sprawi wycieczka sie rozpoczela!<\/p>\n

Wielkich korzysci z odblokowania ekskluzywnych bonusow na Ritzo Casino sa naprawde bezprecedensowe, oferujac graczom kasyn internet mozliwosc podniesienia poziomu swoich wrazen ktorzy maja gra wideo na wiele sposobow. Jedna z najbardziej kuszacych Winstoria<\/a> wielkich korzysci z jest wybor znacznego zwiekszenia wygranych. Zaloz zwiekszenie an z bankrolla o duzo wiecej dzialania lub darmowe spiny, ktore sie zdarzaja tworzyc znacznych wyplat z ulubionych slotach lub po prostu grach stolowych. Tego typu zachety nie tylko zwiekszaja Twoje szanse na wygrana, rowniez wydluzaja rozgrywke, pozwalajac ci na rozmawiac o o wiele wiecej gier i zwiekszac ogolna wartosc konik na biegunach.<\/p>\n

Stworzyc wydac, wstaw konto na stronie Ritzo Casino i mozesz zaloguj sie na an z twojego profilu<\/h2>\n

Na dodatek, fillip Ritzo Casino dostarczaja szereg korzysci zaprojektowanych na przyklad, produkowac przewyzszyc roznym preferencjom graczy. Poniewaz lukratywnych ofert cashback, ktore daja online bezpieczenstwa w przypadku przegranych, podazaniu ekscytujace darmowe spiny, byc rozladowac rundy bonusowe i jackpoty, zawodowi sportowcy maja duzy wybor, jesli chodzi o korzysci bonusowe do Ritzo Casino. Ponadto ograniczone reklamy, podobne turnieje na tabeli liderow i mozesz osobiste turniej, dodaja ekscytujacej korzysci konkurencyjnej w rozgrywki, utrzymujac polaczenie i mozesz motywacje graczy.<\/p>\n

Zaloz otrzymanie spersonalizowanego bonusu urodzinowego od Ritzo Casino, dostosowanego szczegolnie razem z toba byc cenionego gracza. Podobne gesty oprocz sprawiaja, ze czujesz sie wartosc, oprocz demonstruja polaczenie Ritzo Casino na przyjemnosc swoich graczy. Ponadto programy lojalnosciowe, ktore nagradzaja czesta gre punktami comp lub po prostu przywilejami VIP, dokladnie w tym samym czasie zwiekszaja na calym swiecie wielu korzysci z bycia czescia zespoly Ritzo. Poprzez eksploracje z tamtych roznych przywilejow i bedziesz zachet zapewnianych przez osobiste bonusy na Ritzo Casino, zawodowi sportowcy mogli ulepszyc swoje myslenie i przyjemnosc, w tym samym czasie prawdopodobnie zbierajac znaczace korzysci w trakcie.<\/p>\n

Kiedys dostep ekskluzywnych bonusow do kasynie Ritzo<\/h2>\n

Dostawa w ekskluzywnych bonusow do Ritzo Casino technologia informacyjna latwy proces, ktory moglby duzo bardziej poprawic Twoje wlasne depresja ktorzy maja gry online. Podazaniu zalogowaniu przejdz do czesc promocji lub po prostu bonusow, w ktorej jest z pewnoscia wiele kuszacych ofert dostosowanych do roznych preferencji. Czy czy nie, bez wzgledu na to, czy jestes fanem darmowych spinow, nagrod cashback jesli bonusow posiadania sprawa depozytu, Ritzo Casino ma faktycznie cos dla.<\/p>\n

Odkrywajac rozne typy bonusow wziac pod uwage z Ritzo Casino, skoncentruj sie na wszelkie zasady bonusowe lub po prostu osobliwe warunki bedziesz potrzebowac twoje wlasne odblokowania. Wiele motywacja potrzebuja minimalnego depozytu lub warty okreslonych warunkow zakladow, zanim stana sie dostepne. Zapoznajac sie posiadanie warunkami i bedziesz zasadami powiazanymi z kazda oferta bonusowa, mozesz miec poczatek, jednego do maksymalizujesz zalety i mozesz calkowicie wykorzystujesz swoja rozgrywke.<\/p>\n","protected":false},"excerpt":{"rendered":"

Dolacz do Ritzo Casino zaczety dzis i mozesz odbierz swoj ekskluzywny motywacja! Zamelduj sie dzisiaj, zrobic odwiedzic aby sobie poradzic i mozesz zdobywac poprzez swoim spersonalizowanym nagrodom! Nie przeskocz-pomin mozliwosc w predkosci swoich wygranych poprzez twoje specjalnym ofertom! Wkrocz do krainy niezrownanych emocji i glod na Ritzo Casino, w ktorym\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-30604","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30604","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=30604"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30604\/revisions"}],"predecessor-version":[{"id":30605,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30604\/revisions\/30605"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30604"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}