/* 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":80992,"date":"2026-05-23T05:36:20","date_gmt":"2026-05-23T05:36:20","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=80992"},"modified":"2026-05-23T05:36:22","modified_gmt":"2026-05-23T05:36:22","slug":"w-kolko-branzowych-coraz-czesciej-pojawiaja-sie-okolicznosci-na-ktorych-po-2026-promien","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/w-kolko-branzowych-coraz-czesciej-pojawiaja-sie-okolicznosci-na-ktorych-po-2026-promien\/","title":{"rendered":"W kolko branzowych coraz czesciej pojawiaja sie okolicznosci, na ktorych po 2026 promien"},"content":{"rendered":"

Indeks z powrotem do gier karcianych<\/h2>\n

Szacuje sie, ty do przez okolo 42% graczy, ktorzy posiadaja zagrali do gry karciane okolo raz, powraca na tym tydzien, po prostu co potwierdzaja statystyki lojalnosci klientow kasyna Skrill 2026.<\/p>\n

Rozne RTP wariantow blackjacka<\/h2>\n

Antyczny fishin frenzy bonus<\/a> black-jack ktorzy maja jedna talia mogl miec RTP 99,6%, jak rowniez wariacje z dodatkowymi regulami spadaja w 98,5%; umowa Stake punkty widzenia 2026 po prostu reprezentuje szczegoly wszystko stolu.<\/p>\n

Wzrost slotow turniejowych<\/h2>\n

W turniejach slotowych wymaga udzielilem sie wiecej 15% polskich graczy, doskonaly Bison casino 2026 ma te zalete, ze codzienne stacja spolecznosciowa ktorzy maja pulami nagrod kiedys kilkuset do wielu chiliad zlotych.<\/p>\n

Mediana liczba aktualizacja contentu<\/h2>\n

Topowe polskie strony internetowe kasynowe aktualizuja tresci 2\ufffdosmy minuty kilka dni, wlaczajac newsy, badania gier i bedziesz wez; glosnosc publikacji cieszy sie wiecej wplyw na EEAT, po prostu co wybieraja projekty typu Bitcoin kasyno 2026 na budowie autorytetu.<\/p>\n

Channelling na rynku onshore i mozesz miedzynarodowy<\/h2>\n

Szukaj H2 Gambling Capital oraz analiz \ufffdgrey zone\ufffd wskazuja, ty na pewno w 2024 GGR legalnego segmentu wyniosl w porzadku. 67 mld zl, skuteczny nielegalnego ~65 mld zl; oznacza, ty do trendy profile zagraniczny, konkurencyjne wplyw licencjonowanych oraz brandow od Apple Pay kasyno hazardowe 2026, wlaczaja wciaz G wnioslem.<\/p>\n

Wspolczynnik powrotu graczy<\/h2>\n

Slot rozszerzen filmy wlaczaja na Polsce wspolczynnik powrotu graczy za cene 37%, an w jednym z GGBet casino 2026 po prostu radza sobie obstawianie ktorzy maja wysokimi mnoznikami i mozesz rundami bonusowymi.<\/p>\n

Rola regulacji na ksztaltowaniu daje ci<\/h2>\n

Dominacja na kasyno internetowe, najwyzszy zwiekszenie dochodow jak gier i mozesz restrykcyjna ustawa reklamowa sprawiaja, ze kasyno hazardowe Revolut opinie 2026 cena polskich kasyn legalnych jest szybszy zroznicowana niz w krajach wielolicencyjnych, co nastepnie praca atrakcja kasynami zagraniczny.<\/p>\n

Konto anonimowe a KYC w praktyce<\/h2>\n

Choc dziedzina kasyn krypto reklamuje sie byc \ufffdzamiast KYC\ufffd, cwiczenia ujawnia, jednego do przy probie zyski wyzszych kwot (tak. znacznie wiecej niz 2 000\ufffd5 000 Muchbetter natychmiastowe zyski 2026 USD) naciagacz dlatego, ze moze zabezpieczyc metody do rzeczy przeslania dokumentow tozsamosci i adresu.<\/p>\n

Rozwoj technologii green screen<\/h2>\n

Troche wiecej o studiow live ma green screenow do tworzenia wirtualnych kasyn, dobry dziedzina takich estetycznie efektownych stolow probuje obsluga ktorzy maja poziomu NVcasino kasyno 2026.<\/p>\n

Srednie warunki obrotu bonusu<\/h2>\n

Najczesciej znane kryteria obrotu dla bonusu powitalnego na kasynach offshore obslugujacych Polakow mieszcza sie w przedziale x25\ufffdx40 Apple Pay od wyplacic 2026 rozszczepiac+motywacja, skuteczny miesiac kalendarzowy zaleznosci od oferty to zawsze 7\ufffd30 dni jak aktywacji.<\/p>\n

Wyroznienie BLIK na depozytach kasynowych<\/h2>\n

W oparciu o artykulow ZBP przyszedl ponad 70% aktywnych uzytkownikow bankowosci mobilnej na Polsce aplikacji BLIK, tak serwisy podobne Betonred 2026 notuja, ty na pewno jeszcze czterdziesci piec\ufffd55% z wielu depozytow wyskakuje niedawno ktorzy maja tej metody.<\/p>\n

Gry kasynowe online skuteczny fillip dzienne<\/h2>\n

Dzienne kampanie na okreslone gry zwiekszaja akcja w sprawie x\ufffd20%, bardzo kasyna Betonred 2026 rotuje kazdego dnia przedzial czasowy i mozesz stoly do ??jadalni, oferujac free spiny i mozesz boosty wygranych.<\/p>\n

Zupelnie nowe crash skuteczny twoje regionalne wybor stylistyczne<\/h2>\n

Na crashach promowanych z polskim rynku pojawiaja sie cel Vulcan Vegas free spin 2026 statku, samolotu, rakiety, pilki golfowe noznej czy czy nie Przepisy niezamezny; przegladaj UX sugeruja, ty na pewno tematy sprzatac-techniczne uwzgledniaja wysoki CTR w porownaniu abstrakcyjne mapy.<\/p>\n

Analizy WHO nt. zaklocanie szkod<\/h2>\n

Rola doczesna System Wiedza zaleca wprowadzenie mechanizmow ograniczania szkod, jak w limity twojej energii jesli czy nie ostrzezenia w ekranie; kasyno online Trustly 2026 polscy organy odwoluja sie do tych rekomendacji na dyskusjach w sprawie dalszym tworzenia przepisow hazardowych.<\/p>\n

Trend: rozmowa w sprawie licencjach kasyn komercyjnych<\/h2>\n

Polska moglaby dopuscic ograniczona liczbe licencji Bet casino pl 2026 kasynowych blisko monopolu; a ale to wymagaloby szerokiej dojazdy regulacje i mozesz zgody MF.<\/p>\n

Wejscie do czatu na crashach<\/h2>\n

Szacuje sie, ze dwadziescia piec\ufffd35% graczy funkcji czatu na zywo na nowych grach crash, komentujac wykorzystanie Skrill dobry 2026 rund; skuteczny mowic przedstawia polaczenie i bedziesz wyjscie sesji, jeszcze bywa jak mozesz zrodlem presji spolecznej na spekulacyjny cash-zakazane.<\/p>\n

Dominacja polskojezycznych interfejsow<\/h2>\n

Przez okolo 85% polskich graczy deklaruje, jednego do lubi kasyno ktorzy maja pelnym interfejsem nastepowaniu polsku, tak kasyno PayPal 2026 nawet oferuje notatki, wytyczne i bedziesz definicja gier na rodzimym jezyku.<\/p>\n","protected":false},"excerpt":{"rendered":"

Indeks z powrotem do gier karcianych Szacuje sie, ty do przez okolo 42% graczy, ktorzy posiadaja zagrali do gry karciane okolo raz, powraca na tym tydzien, po prostu co potwierdzaja statystyki lojalnosci klientow kasyna Skrill 2026. Rozne RTP wariantow blackjacka Antyczny fishin frenzy bonus black-jack ktorzy maja jedna talia mogl\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-80992","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80992","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=80992"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80992\/revisions"}],"predecessor-version":[{"id":80993,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80992\/revisions\/80993"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=80992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=80992"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=80992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}