/* 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":8365,"date":"2026-04-25T23:01:35","date_gmt":"2026-04-25T23:01:35","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=8365"},"modified":"2026-04-25T23:01:36","modified_gmt":"2026-04-25T23:01:36","slug":"oni-zwiazek-zwieksza-bezpieczniejszy-pieniezne-i-prywatnosc-polskich-graczy","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/oni-zwiazek-zwieksza-bezpieczniejszy-pieniezne-i-prywatnosc-polskich-graczy\/","title":{"rendered":"Oni zwiazek zwieksza bezpieczniejszy pieniezne i prywatnosc polskich graczy"},"content":{"rendered":"

Z powodu przestrzeganiu wyzej wymienionych standardow, profesjonalne kasyna w internecie z Polsce dadza ci swoim uzytkownikom oprocz kilka gry hazardowe, ale rowniez pelna ochrone i mozesz rozsadne standardy gry. Tego typu przepisy sa kluczowe na ochronie polskich graczy oraz promowaniu odpowiedzialnego hazardu. Teraz jest ono zreszta niepotrzebne, bo przeciez uruchomione zostalo polskie prawo kasyno internetowe, o ktorym na sweet rush bonanza gra\u0107<\/a> informacje o piszemy w dalszej czesci drogi tekstu. Zreszta ktorzy maja doswiadczen tej firmy korzystaja prawdziwy rozpoznawalne marki, stad, co warte kazdego grosza podkreslic, tuz przed zmiana wolnosci na 2017 roku jak mozesz przyjmowaly polskich graczy (juz przyjmuja Polakow za ograniczenia, na przyklad. na Wielka Brytania). W przypadku, zarejestrowales sie z kasyno za pomoca naszego linku partnerskiego, mozesz rozmawiac z nami na bezposredni , dobry postaramy sie pomagac w rozwiazaniu sprawy.<\/p>\n

W dowolnym momencie spelniasz te standardy, mozesz uzyc miec zauwazony i bedziesz pozdrawiam w elitarnego grona. Mimo braku tradycyjnych kodow, pakiet bonusowa jest wlasciwie regularnie aktualizowana i bedziesz para do roznych typow graczy. Casino Tot regularnie udostepnia dodatkowe promocje czesto w nowych graczy, od i z nich, z korzystaja posiadanie serwisu od dluzszego czasu. Gracze funkcje jak mozesz pewnosc, jednego do ich analiza i mozesz dzialania bylo znacznie chronione.<\/p>\n

Autentyczne kasyno online technologia informacyjna a wyboru dla polskich graczy, ktorzy chca aby sobie poradzic anonimowo i nie dawac podatkow od wygranych. Kiedy powinienes zdecydowac ukrywasz swoje dzialanie, pozyczasz srodki na zaryzykowanie lub moze wlasnie czujesz stres, gdy nie powinienes grac \ufffd randka spojrz, pomocy. Konflikt schowany naszymi topowymi piecioma kasynami w polskich graczy sa slabe, jednak przypomnijmy, dlaczego to niedawno Boomerang zajmuje pierwsze miejsce.<\/p>\n

Malta Gaming Authority reguluje hazardu internet w innych jurysdykcjach, ale odpowiednie kasyno online na Polsce dziala wedlug zasad ministerstwo finansow. Oprocz brakiem ochrony prawnej i mozesz ryzykiem utraty srodkow, hazardzisci naraza sie na sankcje karno-skarbowe. Warte kazdego grosza przechowywac weryfikacja zarobki i mozesz ewentualny wniosek podatkowy daj jezyk z operatora. Nawet jesli rynku zagranicznego sprawa probuje bardziej zlozony, wylacza kiedy to dotyczy zagrozenie uczestnictwa w dziedzinie, dokladnie kto z Polsce jest traktowany byc niezgodny z ustawa. Na polskim stylu podatki jak gier obciaza operatora to bedzie liczony uwzglednienia stawek wskazanych do ustawie.<\/p>\n

Oferty realizowane probuje szybko, informacje dzwiek na koncie gracza zazwyczaj za kilka minut<\/h2>\n

Z kasynie internetowym jest z pewnoscia dziesiatki i tysiace automatow, gry karciane, rozne rodzaje ruletki, synergistyczne show ktorzy maja prowadzacymi, loterie, beano i mozesz gry linia crash. Patrzac na roznorodnosc opcji depozytow i bedziesz wyplat, zwracamy uwage na wygode w polskich graczy. Jednym posiadanie waznych kryteriow, z powodu ktorym mozesz chciec solidna platforme hazardowa, sa bogata oferta rozrywek. Na naszej stronie szukaj opinie w zasadzie najbardziej kasyn internet, do ktorych obstawianie jest nie tylko bezpieczna, ale takze przystepna cenowo.<\/p>\n

Stad stale warto decydowac tylko polskie odpowiednie kasyno online, i to funkcja mozliwy do opanowania Ministerstwa Finansow i oferuje pelna jasnosc rozliczen. Niedobor licencji ustawienie brak nadzoru, a to odnosi sie do konsekwentnie daje operatorowi pelna kontrole wzdluz boku przebiegiem gra i bedziesz wyplatami. Porownujac zapewnia ci, warto sluchac oprocz z motywacja, wszystko to samo jak mozesz bezpieczniejszy transakcji i bedziesz renome operatora.<\/p>\n

Jedynym ograniczeniem bylo niedobor mozliwosci zarobki i zarobienie<\/h2>\n

Zawsze sprawdzaj analizy, certyfikowac (MGA, UKGC) i mozesz opinie innych ludzi graczy. Ustawodawstwo dotyczace gier losowych siec bylo bardziej zlozone porownaniu do przypadku tradycyjnych kasyn. Z Polsce gry kasynowe online dziela sie do inne grupy. Immortal Romance technologia informacyjna automat ktorzy maja motywem wampirow, kto posiada jeszcze inny system fabularny i rozne tryby darmowych spinow.<\/p>\n

18+ Gra wideo z kasynie laczy sie posiadanie ryzykiem uzaleznienia \ufffd chociaz zauwazenia niepokojacych objawow przerwij gre i mozesz uzyj profesjonalnej pomocy. PL Dzien zarobki Nieodpowiedni (do 24-48h) Czeste opoznienia lub po prostu zmniejszone wyplat Kasyno wspiera szereg metod zakupow, i wybitny w Polsce BLIK i mozesz kryptowaluty, w tym teraz oferuje jakiekolwiek inne waluty, w tym PLN, EUR jesli czy nie BTC. Jest w pelni spersonalizowane na nie mam polskich graczy \ufffd ktorzy maja adresowaniem wydatkow na PLN, opcja BLIK i bedziesz polska wersja jezykowa profile. Ponizej zobacz smakolyki kasyn, i dlatego zdobyly wyroznienie lub po prostu rozpoczely dzialalnosc na 2025 sezonu i ciesza sie uznaniem jeden z polskich graczy. Na 2025 sezonu mozliwosci bezpiecznego kasyna w internecie sa lagodny niz kiedykolwiek wczesniej \ufffd wystarczy zorientowany licencja, reputacja i mozesz transparentnoscia operatora.<\/p>\n","protected":false},"excerpt":{"rendered":"

Z powodu przestrzeganiu wyzej wymienionych standardow, profesjonalne kasyna w internecie z Polsce dadza ci swoim uzytkownikom oprocz kilka gry hazardowe, ale rowniez pelna ochrone i mozesz rozsadne standardy gry. Tego typu przepisy sa kluczowe na ochronie polskich graczy oraz promowaniu odpowiedzialnego hazardu. Teraz jest ono zreszta niepotrzebne, bo przeciez uruchomione\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-8365","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=8365"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8365\/revisions"}],"predecessor-version":[{"id":8366,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8365\/revisions\/8366"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=8365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=8365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=8365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}