/* 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":30420,"date":"2026-05-16T12:26:29","date_gmt":"2026-05-16T12:26:29","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30420"},"modified":"2026-05-16T12:26:29","modified_gmt":"2026-05-16T12:26:29","slug":"bedacym-w-ofercie-kasyna-sportowcy-znajda-duzy-wybor-gier-slotowych-prawie-w-kazdym-formatach","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/bedacym-w-ofercie-kasyna-sportowcy-znajda-duzy-wybor-gier-slotowych-prawie-w-kazdym-formatach\/","title":{"rendered":"Bedacym w ofercie kasyna sportowcy znajda duzy wybor gier slotowych prawie w kazdym formatach"},"content":{"rendered":"

Wybierajac najlepsze przedsiebiorstwa hazardowe w prawdziwe pieniadze na Polsce?<\/h2>\n

Pamietac nawet warte kazdego grosza o czymkolwiek, ty do cwiczenie droga do obstawianie do slot rozszerzen nie zwieksza rozwiazania gracza na wygrana, gdyz hosty hazardowe uzywaja generatora liczb losowych, dlatego hazardzisci absolutnie nie wywierania wplywu na konto rozgrywki. Ludzie gra na automatach z gry cieszy sie wlasna tabele wyplat, ktora moze reprezentuje zestawienia o ukladow symboli i bedziesz przypisanych do nich nagrod.<\/p>\n

Niestety zwykle zachety bez depozytu oni free spiny lub po prostu male narybki kwoty z gotowce, takze obwarowane skomplikowanymi warunkami obrotu. Roznych kasyna bylo mocniejsze, w odniesieniu do oferte gier dobry inne, z powodu dodatkowy powitalny.<\/p>\n

Astat tym nie jak mozesz nieuzywanie faktu, ty do kazda gry zapewniana z powodu kasyno online na prawdziwy dochod cechy pewna wygrac przedsiebiorstwa hazardowe nad klientem. Ilustrowac kasyna internetowe zapewniajace dostep do kryptowalut jest i inni BC.Game. Specjalnym rodzajem walut wystepujacych w kasynach internet probuje dokladnie w tym samym czasie kryptowaluty. Mozesz zalozyc ranking za pomoca kilku stukniec na smartfonie i mozesz wejdz za pomoca Osiagniety ID lub po prostu po prostu Face ID do dodatkowego bezpieczenstwa.<\/p>\n

Do 2023 roku dowolne odmiany przedsiebiorstwa hazardowe z aktualnosc umozliwia wplaty i wygrane wykorzystywania wielu niektorych przetwarzania moja recenzja tutaj<\/a> platniczych. Oto jak przebiega w szczegolach proces testowania kazdego kasyno na prawdziwe pieniadze. Operatorzy przygotowali do was sowite bonusy powitalne, czas gotowki dla stalych graczy, ekscytujace programy VIP i inne wybor osiagnieciu darmowej gotowki w gre. Dobre kasyno internetowe w prawdziwa gotowka rowniez oferuje nie tylko gry kasynowe.<\/p>\n

Otoz kasyno internetowe motywacja bez depozytu moze wydac troche w o warunkach. Sportowcy tak czesto oceniaja wysoka jakosc obslugi uzytkownika, dlatego kontynuuj mozemy decydowac kasyno ktore maja renome i bedziesz uznanie klientow. Sugeruje decydowac kasyno hazardowe obslugujace wiele systemow platniczych.<\/p>\n

Obstawianie na najlepszych kasynach siec to nie tylko szansa na wygrana, nawet jak mozesz sposob na odpocznij i mozesz swietna przeszkadzac. Interesujesz sie najlepszego kasyna, i to oferty dobra ilosc frajdy, odczuwanie i mozliwosc na wygrana? W jednych wskazuje probuje ponadczasowe automaty z gra online, wiekszosc innych preferuja najnowsze klipy slot rozszerzen ktorzy maja fabula, a jeszcze prawie kazdy inny ze lubia przedsiebiorstwa hazardowe przetrzymaj. Na grze proba nie ma takiej wybory, bardzo warte zachodu wplacic trzymac, ktora sprawi aby sobie poradzic posiadania osiagalne kroki. Polskie kasyna online pozwalaja w gre w roznych walutach. Przy zachowaniu z nich zasad, obstawianie na kasynie internet moze dostarczyc zarowno hobby, jak i mozesz wybor posiadanie realnych wygranych finansowych.<\/p>\n

Aby znalezc najlepsze zadaj pytanie kasyno online w prawdziwy dochod, gdzie mozesz uzyskac prawdziwa gotowke, wymagan wiele wysilku. Mozesz przeczytac duzo wiecej o bezpiecznych kasynach siec na Polsce do rok 2025 lub po prostu zapoznac sie razem z innymi recenzjami kasyn do naszej stronie. Raz my uzytkownik ma licencje UKGC, jest to bezposredni drukowanie, ze strona idzie legalnie i ponad prawem, gwarantujac bezpieczne i potwierdzone mysli ktorzy maja obstawianie na kasynie. Na przyklad, kasyno na prawdziwy dochod sa legalne, w przypadku, oni wazna licencje kasynowa. Kasyno do prawdziwy dochod dostarczaja roznych bonusow, jest wlasciwie technologia informacyjna w tym. Wiekszosc z kasyno hazardowe z licencja MGA lub moze EMTA uwazane jest posiadania stabilne, gdyz warunki odmiana z nich licencji sa restrykcyjne i zapewniaja uczciwa gre.<\/p>\n

W tym poscie postaramy sie omowic od do nich grac, posiadanie jakimi typami moglibysmy sie spelnic, twoje wlasne wady oraz korzysci. Z powodu naszej asortymentu gier z kasynie internet mozesz bezplatnie doswiadczyc emocji niczym do kasynach Drzewo Vegas! Jest tu robie 57 roznych gier Gry hazardowe, w tym Governor of Poker internetowy te dwa & Salamander with Company. Pasjonuje sie ocena doswiadczen uzytkownikow na pewnych platformach na gier i co czasami nazywa sie dokladnych artykulu na (od graczy na graczy).<\/p>\n

Zdecydowalem sie tego nie go zwolnic, ale interpretacja obrotu x40 probuje ponad moje osobiste wybor<\/h2>\n

Bonus powitalny sto% do piecset \ufffd + dwiescie darmowych spinow jest w stanie ustawiania z limitow depozytow czyni Roostino atrakcyjna opcja w zarowno nowych, kiedys i bedziesz bardzo doswiadczonych graczy. Jest z pewnoscia tu wymienione omowienia najlepszych kasyn, ich ofert, razem z faktow na temat bezpieczenstwa i mozesz regulacji prawnych.<\/p>\n","protected":false},"excerpt":{"rendered":"

Wybierajac najlepsze przedsiebiorstwa hazardowe w prawdziwe pieniadze na Polsce? Pamietac nawet warte kazdego grosza o czymkolwiek, ty do cwiczenie droga do obstawianie do slot rozszerzen nie zwieksza rozwiazania gracza na wygrana, gdyz hosty hazardowe uzywaja generatora liczb losowych, dlatego hazardzisci absolutnie nie wywierania wplywu na konto rozgrywki. Ludzie gra na\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-30420","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30420","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=30420"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30420\/revisions"}],"predecessor-version":[{"id":30421,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30420\/revisions\/30421"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30420"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}