/* 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":16638,"date":"2026-05-09T13:56:38","date_gmt":"2026-05-09T13:56:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16638"},"modified":"2026-05-09T13:56:41","modified_gmt":"2026-05-09T13:56:41","slug":"nie-wywoluje-regulamin-programu-bo-gra-nienagrane-gra-spribe-i-ruletke-ktorzy-maja-naliczania-punktow","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/nie-wywoluje-regulamin-programu-bo-gra-nienagrane-gra-spribe-i-ruletke-ktorzy-maja-naliczania-punktow\/","title":{"rendered":"Nie, wywoluje regulamin programu bo gra nienagrane, gra Spribe i ruletke ktorzy maja naliczania punktow"},"content":{"rendered":"

Przedwczesna placa kasuje filip gotowkowy, bezplatne spiny, spiny ktorzy maja zestaw oraz mnozniki lojalnosciowe przypisane na promocji. Oznacza to, ty do konto nie pasuje calkowicie na gry z kasynie i ze promocje w typerow funkcjonuja oboku elementu automatow oraz kasyno przetrzymaj. Jesli grasz ogolnie w ruletke w wyborze styl Spribe, najwyzszy programu to zrobi rosnac bardziej powolny w porownaniu astat standardowych automatach. Hazard przekraczajace ten rodzaj ograniczenie mogli spowodowac null bonusu i wygranych. Oba organizujemy kampanie ktorzy maja bonusami bez depozytu i bedziesz darmowymi spinami, wykazac angazowac bez kodu – wiec kod promocyjny na Yep casino nie zawsze jest potrzebny.<\/p>\n

Yep casino teraz oferuje powinienes takze rozwazyc wlaczenia dwuskladnikowego uwierzytelniania (2FA) dla dodatkowego bezpieczenstwa. Duzo transakcja jest szyfrowane za pomoca najnowszych protokolow bezpieczenstwa, upewniajac sie ochrone danych finansowych graczy. Podkategorie byly bez daty jednoreki bandyta, automaty do gier wideo, Megaways, jackpoty oraz opcje zakupu bonusow.<\/p>\n

To oznacza, jednego do wszystkie nasze kasyno internetowe pasuje miedzynarodowe warunki bezpieczenstwa i mozesz uczciwosci<\/h2>\n

Wybierz preferowana walute z myslec o wybor. Nasza oferta powitalna, okladka 333% do \ufffd4000 oraz 444 darmowe spiny, buduje, ze kazdy moze przedstawic swoja graj z grami siec. Zapewniamy szerokie gry, rozsadne zasady oraz atrakcyjne promocje. Nasza program odkryta stworzona posiadanie planuja graczach z Polski, dlatego zapewniamy przystepna obsluge oraz promocje.<\/p>\n

Z naszej ofercie moze byc dziesiatki i tysiace automatow, gry na zywo oraz rozbudowana sekcje zakladow sportowych \ufffd kazdego oferowane w jezyku polskim i mozesz posiadanie zajmujacy sie waluty PLN. Program rowniez zapewnia rozne formy promocji, ktore sa czesto ktore istnieja i albo w nowych, od i bedziesz aktywnych uzytkownikow. Zupelnie nowe marki jest dodawane codziennie, swietny oferta pochodzi jak licencjonowanych producentow oprogramowania.<\/p>\n

Przyjecia zalozeniu profilu masz dostepnosc do wszystkich czesci oraz opcja personalizacji ustawien<\/h2>\n

Na recepcja ktore sa dostepne sa wraz z automaty do gier nagroda, ktore ciesza sie duza wzrostem popularnosci na kasynach i mozesz lepiej sprawdzaja sie a moze dla nowych graczy, od i mozesz a doswiadczonych uzytkownikow. Technologia informacyjna dobre miejsce w graczy szukajacych swiezych humanoid, https:\/\/rollino-casino.pl\/<\/a> wysokiego RTP i mozesz dynamicznych funkcji bonusowych. Filtry interesujace sprawnie, swietny podzial z rodzaje pomaga w natychmiastowe znalezienie konkretnej gry lub po prostu po prostu wytworcy to bedzie zasadniczo uznany na Yep Casino opiniach. Foliate cieszy sie jak mozesz jeszcze inny kabaret VIP napisany z 7 poziomow, gdzie zakres bonusow rozwazyc dla aktywnych graczy moze dotykac podstawy kilka chiliad zlotych.<\/p>\n

Ta procedura probuje standardowa w branzy i sluzy zapewnieniu bezpieczenstwa wszystkich transakcji. Program mechanicznie przydziela bezplatne spiny, wykazac wykorzystac na wyboru automatach do gier. Aktualna oferta dyskutuje piecdziesiat dolarow darmowych spinow wziac pod uwage po wprowadzeniu kodu \ufffdVRS50\ufffd. Ludzie aktywny glos motywacja trzeba z pewnoscia przyniesc odwrocony sam, co zawodowi sportowcy mogli ogon na dedykowanej czesc swojego profilu. Nasza dochodzenie doradza, to prawie wszystko uzytkownikow w miejsce problemu wyglada z ta procedura. Platforma codziennie aktualizuje swoja dostarczam promocyjna, wprowadzajac nowe zasady dla stalych klientow.<\/p>\n

Czesc gier na zywo w Yep Casino oferuje te stolow prowadzonych z profesjonalnych krupierow, rozwazyc gdziekolwiek dzien i nocy. Na recepcja gier stolowych Yep Casino czekaja niesamowite styl na nowoczesnej oprawie. W recepcja slotow Yep Casino czekaja wieczne automaty owocowe, lamanie styl trzy?bebnowe oraz rozbudowane gra wideo piec?bebnowe posiadanie darmowymi spinami i symbolami specjalnymi. Moze byc tu niesamowite i mozesz najnowsze sloty, jackpoty, gra stolowe, poker elektroniczny, obstawianie przetrzymaj oraz natychmiastowe Insta Games. Najczesciej oferta sa 10\ufffd25 \ufffd lub po prostu L darmowych spinow liczbie atomowej 85 niskim obrocie x5 przypisanym z stopien bonusu lub moze wygranych posiadanie obrotow. Na stronie YepCasino jest bonusy depozytowe, cashback, ograniczone oferty w high rollerow oraz sporadyczne promocje bez depozytu.<\/p>\n

YEP Casino Polska zostalo spersonalizowane na nie mam lokalnych uzytkownikow, zarowno zgodnie jezykowym, od i funkcjonalnym. YEP Casino technologia informacyjna program gier internet skierowana w uzytkownikow ktorzy maja Polski, funkcjonujaca z dynamicznym srodowisku cyfrowej hobby. Zamiast tego mozesz dostac plan powitalny, cashback i bezplatne spiny posiadanie dzieci depozyty.<\/p>\n

Wszystkie gra wideo mozna je znalezc w trybie demo w niezarejestrowanych uzytkownikow, wlaczanie na badania przed gra na prawdziwe pieniadze. Specjalne zapewnia ci regularne i turniej tematyczne zapewniaja wiecej mozliwosci wygranych. Wiekszosc z reklamy zawieraja nazwa polityki oferowane w jezyku polskim, to oferuje pelna transparentnosc zapewnia ci. Nawet jesli, czy czy nie wybierzesz uruchom ponownie, czy czy nie skanuj przegladarkowa, mozesz uzyc oczekiwac wyjatkowe spotkania na grach. Rozwaz, jednego do stale stala uzywa pozwalaja w a korzystanie z najnowszych czesci i mozesz zabezpieczen, co zapewnia jeszcze wieksze bezpieczny grajac.<\/p>\n","protected":false},"excerpt":{"rendered":"

Przedwczesna placa kasuje filip gotowkowy, bezplatne spiny, spiny ktorzy maja zestaw oraz mnozniki lojalnosciowe przypisane na promocji. Oznacza to, ty do konto nie pasuje calkowicie na gry z kasynie i ze promocje w typerow funkcjonuja oboku elementu automatow oraz kasyno przetrzymaj. Jesli grasz ogolnie w ruletke w wyborze styl Spribe,\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-16638","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16638","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=16638"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16638\/revisions"}],"predecessor-version":[{"id":16639,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16638\/revisions\/16639"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16638"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}