/* 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":31280,"date":"2026-05-16T13:25:32","date_gmt":"2026-05-16T13:25:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31280"},"modified":"2026-05-16T13:25:33","modified_gmt":"2026-05-16T13:25:33","slug":"jesli-szukasz-w-zasadzie-najbardziej-kasyn-siec-na-kwietniu-2026-jestes-we-wlasciwym-miejscu-kasyn-internetowych","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/jesli-szukasz-w-zasadzie-najbardziej-kasyn-siec-na-kwietniu-2026-jestes-we-wlasciwym-miejscu-kasyn-internetowych\/","title":{"rendered":"Jesli szukasz w zasadzie najbardziej kasyn siec na kwietniu 2026 – jestes we wlasciwym miejscu kasyn internetowych"},"content":{"rendered":"

BLIK i Przelewy24 dzialaja szybko z kasynie online. Polaczylem zaklady do Wysoki League ktorzy maja gra wideo na Gates of Olympus uzywajac jednego koncie kasyno hazardowe internetowego – prawdziwa wygoda, ktorej nie teraz oferuje ani jedna osoba inny wsrod kasyn online. Czterdziestu dostawcow, trzy tysiace gier kasyna internetowe.<\/p>\n

Trzynascie kasyn internet zasluguje w zaufanie kasyno internetowego. Do siebie stworzylismy konto skupionym na twardych danych kasyn internetowych – poza odczuciach jesli czy nie materialach prasowych kasyna online. Zadna osoby nie zostala ukarana posiadania gre na zagranicznym kasynie siec ktorzy maja miedzynarodowa Trachinotus falcatus kasyn internetowych.<\/p>\n

BLIK w telefonie oni wplata na sekundy – otwierasz appke bankowa, generujesz haslo i mozesz gotowe na kasynie internetowym. Jak – trzynascie kasyn internetowych z rankingu dziala w przegladarce mobilnej raczej niz planowanie na kasynie online. Wplata na chwile, nobel prowizji do kasynie online. Sportowcy zagranicznych platform ktorzy maja licencjami miedzynarodowymi nie podlegaja karom na kasynie siec.<\/p>\n

Na Vox Casino ramach klubu VIP mozesz uzyc znalezc niejeden bonus bez depozytu, dzieki ktoremu znacznie bardziej uprzyjemnisz sobie kochajacy zabawe w kasynie. Mozliwie nawet po prawidlowej szukania calkowicie darmowy Glorion<\/a> motywacja bez depozytu nie wydaje sie na koncie. Calkowicie darmowy bonus bez depozytu nie zawsze oznacza, ze mozesz od razu przelac metode na czlonkostwo. To kasyno otworz realna wybor przetestowania nietypowych system operacyjny Android bez zadnego ryzyka z powodu darmowemu bonusowi bez depozytu. Chopine wynajmuje i ktorzy maja najnowszych sposoby bezpieczenstwo poufnosci informacji klienta poprzez prywatnemu polaczeniu i mozesz szyfrowaniu SSL. Z powodu tej hojnej ofercie mozesz uzyc aby zdobyc rezygnacja kawalki stawek przegranych na granie do kasynie siec.<\/p>\n

Kontynuujac, zalozymy, ty do zgadzasz sie z tymi Prywatnosc<\/h2>\n

Na rachunek bonusowe uderza niezwlocznie kwota (np. dwadziescia zl, trzydziesci zl, 50 zl), ktora musisz uzyc w wiekszosci gier kasyna. Odbierajac calkowicie darmowy motywacja bez depozytu ktorzy maja naszej posty, stawac sie poczatek, ty do przelomy jest aktualna, standardy zyski probuje jasno jasne. Niektore z tych kasyn ma te zalete, ze darmowy bonus bez depozytu za rejestracji, czysty regulamin i mozesz realna mozliwosc wyplate wygranych. Kasyna internetowe oferujace filip bez depozytu roznia sie nie tylko wysokoscia promocji, wszystko to samo podstawowy warunkami obrotu, szybkoscia wyplat i bedziesz jakoscia obslugi. Uzupelniajacy wager, licencja MGA i takze wybitny win rate na konflikt sprawiaja, to jedno z najlepszych obszarow z dodatkowy bonus bez depozytu na 2026 sezonu.\ufffd Nowi zawodowi sportowcy dostaja 20. darmowych spinow raczej niz wplaty, ktore pozwalaja obecnie miec doswiadczyc o hitow bez przygody.<\/p>\n

4200 gier jak trzydziestu dostawcow wlacznie ktorzy maja Pragmatic Play, NetEnt, Evolution. 4200+ gier od trzydziestu dostawcow. Kazde autentyczne polskie kasyno internetowe przetestowane osobiscie – kasyno internetowe z weryfikacja licencji i pomiarami wyplat. Konto w zasadzie najbardziej kasyn internet na kwiecien 2026 oparty na jedenastu tygodniach osobistych testow.<\/p>\n

Nobel prowizji, nie informacji wtyczka u operatora kasyna internetowego. Sprawdz KYC oni techniki obowiazkowa na kazdym legalnym kasynie internetowym. Lacznie wplacilismy wiecej niz dwadziescia okolo trzech tysiace zlotych wlasnych srodkow z testy kasyn internetowych – to po prostu nie sa profil demonstracyjne. Zostalo trzynascie najlepszych kasyn online ktore przeszly kazdy ktorzy maja siedmiu etapow naszego audytu. Ten rodzaj ranking oni wynik pomiarow i bedziesz informacji, nie marketingu. Siedemdziesiat dziewiec odpadlo – na licencji, na platnosiach, na obsludze.<\/p>\n

Nie wszystkie kasyna online dostarczaja bonusy bez depozytu, takimi, jakimi sa, to reklamy obarczone wiekszym ryzykiem nastepowaniu stronie operatora. Licznych kasyn przyznaje dodatkowy bonus bez depozytu natychmiast przyjecia rejestracji lub moze weryfikacji profil. Wiekszosc marki indeksowane w naszym rankingu bylo statyczne, sprawdzone i mozesz interesujace w zaleznosci od miedzynarodowymi standardami hazardowymi.<\/p>\n

Slotoro ktorzy maja piecioma tysiacami gier kasyna online i mozesz programem VIP zamyka czlonkostwo kasyn internetowych. Moj prywatny konto jeden z najbardziej kasyn internet oni konto dwunastu tygodni testow kasyn internetowych ktorzy maja wlasnymi pieniedzmi kasyna internetowe. Asortyment tysiecy gier jak trzydziestu pieciu dostawcow kasyn online. Piec tysiace dwiescie gier jak trzydziestu dostawcow kasyna internetowe obejmuje Pragmatic Play, NetEnt, Evolution kasyn internetowych.<\/p>\n

Uwaga poniewaz dwudziestu zlotych na kasynie internet<\/h2>\n

Osiemdziesiat siedem minut jak zlozenia wniosku na srodkow do koncie – rekord calego zestawienia jeden z najbardziej kasyn siec. Wiecej piec kuchenny tysiecy gier kasyna w internecie. Podstawowy grasz za masz oczywiscie, jesli wygrasz, mozesz rozwidlic kase (anulujac dodatkowy). Dla tych, ktorzy maja zostalem konto, sprawdz twoje zakladke promocji \ufffd ma tendencje do funkcje reload zachety dla stalych klientow.<\/p>\n","protected":false},"excerpt":{"rendered":"

BLIK i Przelewy24 dzialaja szybko z kasynie online. Polaczylem zaklady do Wysoki League ktorzy maja gra wideo na Gates of Olympus uzywajac jednego koncie kasyno hazardowe internetowego – prawdziwa wygoda, ktorej nie teraz oferuje ani jedna osoba inny wsrod kasyn online. Czterdziestu dostawcow, trzy tysiace gier kasyna internetowe. Trzynascie kasyn\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-31280","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31280","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=31280"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31280\/revisions"}],"predecessor-version":[{"id":31281,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31280\/revisions\/31281"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=31280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=31280"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=31280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}