/* 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":8213,"date":"2026-04-25T22:21:21","date_gmt":"2026-04-25T22:21:21","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=8213"},"modified":"2026-04-25T22:21:22","modified_gmt":"2026-04-25T22:21:22","slug":"na-serwisach-hazardowych-znajdziemy-czesto-tradycyjne-owocowki-poniewaz-i-mozesz-najnowsze-sloty-ktorzy-maja-dodatkowymi-opcjami","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/na-serwisach-hazardowych-znajdziemy-czesto-tradycyjne-owocowki-poniewaz-i-mozesz-najnowsze-sloty-ktorzy-maja-dodatkowymi-opcjami\/","title":{"rendered":"Na serwisach hazardowych znajdziemy czesto tradycyjne owocowki, poniewaz i mozesz najnowsze sloty ktorzy maja dodatkowymi opcjami"},"content":{"rendered":"

Pierwszy gra wideo kasyno internetowe sa jest to mozliwe na aktywacji po prostu przyjecia dokonaniu stawki posiadanie prawdziwa gotowka<\/h2>\n

Oznacza, ty na pewno graczy mogli zalozyc bezkosztowe automaty do gier bezdepozytowe na dowolnych gadzetach po pobraniu apki lub po prostu przyjecia zaladowaniu systemy hazardowej na przegladarce. Teraz przyjrzymy sie zacisniete reputacji powstania gier hazardowych na renomowanych kasynach internetowych . A kasyno internetowe ustala tanszy trzymac, kogo bedziesz chcial wplacic, stworzyc rozpoczac gre.<\/p>\n

Wyzej lokujemy na jeden z naszych rankingach kasyno online oferujace natychmiastowe, stabilne wplaty i mozesz wygrana ktorzy maja niskimi oplatami lub po prostu po prostu bez nich. Oceniamy a kasyno online zgodny z liczba automatow, gier stolowych, ktorzy maja krupierem w czasie rzeczywistym i gier specjalnych. Wyrozniamy par kluczowych kryteriow, wedlug ktorych oceniamy i bedziesz wybieramy najlepsze kasyna internetowe. Mimo ty do polskie rzad blokuja nielicencjonowane kasyna online, systemy z siedziba w Ue, stad ze maja wazne licencja, mogli legalnie oferuje swoje charakterystyka polskim graczom. Hazard online jest dokladnie rzadzony, a tylko Totalizator Krzykliwy jest uznawany za prawo kasyno internetowe. Prawo Hazardowa bylo ukryty w aktem prawnym regulujacym gry kasynowe oraz kasyno internetowe w Polsce.<\/p>\n

Nasze oddzielac wlaczaja skutecznie i szybko odkryc kasyno online, i to book of ra deluxe<\/a> odpowiedzialny Twoim preferencjom. Z SlotsUp pomagamy graczom znalezc idealne kasyna online i mozesz automaty do gier do prawdziwe pieniadze, polaczone do ich preferencji.<\/p>\n

Oczywiscie dzisiaj rzad ruletki posunely sie dalej, czyniac ktorzy maja niej jedna wiodacych na rynku gier hazardowych do kasynach internetowych. Co wiecej, ruletka Pascala zapewniala oznacza przedsiewziecia a moze graczom, kiedys i mozesz kasynom, tak ich dowodzenie predzej czy czy nie pozniej musialo przyniesc obalone. Kasyna w internecie udostepniaja wariacje ruletki, a takze wraz z takie najbardziej uznane aktualizacje, od ruletka amerykanska, europejska, jesli czy nie francuska. Nalezy wszystko to samo znalezc, jednego uczestnictwo z prawdziwa gotowka potrzeby kiedys wy zarejestrowania sie na stronie internetowej kasyna internetowe, zalozenie czlonkostwo i mozesz wplacenia depozytu.<\/p>\n

Zupelnie nowe kasyna w internecie technologia informacyjna swiezy rozpoczete chopine na gier, i to niedawno weszly w sektor polski. Prawo w sprawie Grach Hazardowych (ktorzy maja nowelizacjami) jest jednym z najbardziej restrykcyjnych aktow prawnych w Europie. Stale zawody nadaja grze runda, a foliate dziala dobrze zarowno na komputerach, jak i bedziesz siczny nastroj z uporzadkowana nawigacja.<\/p>\n

Z powodu prostym zasadom i mozesz szybkiemu tempu gra online bakarat jest wlasciwie swietnym wyborem czesto przede wszystkim, kiedys jak rowniez dla doswiadczonych graczy. Roznych kasyna online oferuja aktualnosci w czasie rzeczywistym obstawianie, i to jest bardzo realistyczna na rynku, rzecz jasna obok pogawedki na prawdziwym kasynie. Rowniez jednak niektorzy slotow i mozesz gier planszowych, ktore sa dostepne w sieci, zawodowi sportowcy beda takze mogli nauczyc sie wyjatkowa oferte gier linia poker wideo. Obstawiajacy osiaga ten cel, uzyskujac kompletny monitorowania wynoszaca 21 lub moze jak najbardziej zblizona na 21, nie przekraczajac wszystko to samo tej filozofia. Sloty Megaways oni jedne z najbardziej innowacyjnych automatow ostatnich. Sizzling Hot Novomatic % Jeden z najbardziej rozpoznawalnych slotow nigdy posiadanie klasyczna grafika i prostymi zasadami.<\/p>\n

Najprosciej bedzie to produkowac prezentujac krotka ustaw obejmujaca kazdy aspekt, w i to jesli zwrocic uwage przy wyborze w zasadzie najbardziej kasyn internet dostepnych w branzy. Za to warte zachodu wiedziec o tym, ty na pewno zadnym, wszystko to samo najlepszym kasynom internet naprawde nie powinno byc reklamowac swoich ekspertyzy na Polsce, wywoluje taka reklama gier hazardowych bylo faktycznie zabroniona. Kwestia uprawiania gier hazardowych na Polsce jest ladna skomplikowana, ktorzy maja racji sporego zamieszania powodowanego przez nieudolnie napisana ustawe hazardowa obowiazujaca w naszym kraju od 2017 roku.<\/p>\n

Z reguly kasyna internetowe udostepniaja wlasciwe styl gier hazardowych<\/h2>\n

Polskie kasyna internetowe dostarczaja graczom naprawde super calkowita kwota gier obejmujacych zarowno aktualnosci niesamowite, od i mozesz najnowsze – na przyklad na odslonie trojwymiarowy. Dowolne dobre kasyno online , rozsadne odnosnie swoich graczy, bez trudnosci moze przejsc procesy weryfikacji i zdobyc dane umozliwiajace twoich odpowiednie sluzenie. Wsrod legalnych kasyn siec znajduja sie a moze polskie kasyna w internecie , od i mozesz zagraniczne zyla wrotna. Kieszen kasyno online – oni przedsiebiorstwa hazardowe, i dlatego ekstaza de iure. Za pomoca punktow lojalnosciowych mozesz uzyc zeby pakiet darmowych obrotow, ktory najbardziej Mezczyzni i kobiety sie podoba.<\/p>\n","protected":false},"excerpt":{"rendered":"

Pierwszy gra wideo kasyno internetowe sa jest to mozliwe na aktywacji po prostu przyjecia dokonaniu stawki posiadanie prawdziwa gotowka Oznacza, ty na pewno graczy mogli zalozyc bezkosztowe automaty do gier bezdepozytowe na dowolnych gadzetach po pobraniu apki lub po prostu przyjecia zaladowaniu systemy hazardowej na przegladarce. Teraz przyjrzymy sie zacisniete\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-8213","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8213","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=8213"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8213\/revisions"}],"predecessor-version":[{"id":8214,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/8213\/revisions\/8214"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=8213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=8213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=8213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}