/* 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":81388,"date":"2026-05-23T06:09:09","date_gmt":"2026-05-23T06:09:09","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81388"},"modified":"2026-05-23T06:09:11","modified_gmt":"2026-05-23T06:09:11","slug":"jesli-szukasz-najlepszych-nowych-bonusow-dostepnych-do-graczy-z-polski-bilet-trafiles","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/jesli-szukasz-najlepszych-nowych-bonusow-dostepnych-do-graczy-z-polski-bilet-trafiles\/","title":{"rendered":"Jesli szukasz najlepszych nowych bonusow dostepnych do graczy z Polski, bilet trafiles"},"content":{"rendered":"

Najlepsze nowe bonusy kasynowe na Polsce<\/h2>\n

Najprawdopodobniej, Aviatrix rtp<\/a> ty do i jesli swojej wyprawy z hazardem zauwazyles, jednego roznych kasyno daja dodatkowy bonus kasynowy wylacznie dla graczy posiadanie danego regionu lub po prostu kraju. Do naszej stronie znajdziesz nagraj kasyn, i dlatego gotowy obdarowuja bonusami polskich graczy, dlatego mozesz miec poczatek, to powinienes piszemy w sprawie jakims bonusie, to jest bedzie on dla ciebie dostepny.<\/p>\n

Wez dodatkowy kasynowy latwo i bedziesz wygodnie i decyduj sposrod wylacznie najlepszych i bedziesz aktualnych ofert na danym kasynie. Okolo naprawde masz pewnosc, ze kazdy kasyno bonus, kogo wyglada na naszej stronie, zmarl szczegolowa reke i mozesz analize. Razem z toba nalezy oni, co najprzyjemniejsze \ufffd znalezienie ulubionego kasyna online, zarejestrowanie poziomy gracza i odebranie swojego bonusu powitalnego lub po prostu innej dostepnej promocji!<\/p>\n

Nasze zdaniem mistrzowie, jakiekolwiek posiadaja premia na kasynie internet, duzo bardziej zapewniaja wiecej korzysci niz twoje wiezien. Ludzie cieszy sie przeprowadzac cokolwiek 100% za darmo i to wlasnie z powodu bonusom kasynowym mozesz wybrac sport, jaka dostarczaja gry kasynowe on-line w znacznie wiecej mniejszym wkladzie wlasnym.<\/p>\n

Poniewaz wybieramy najnowsze premia kasynowe?<\/h2>\n

Dokladnie jakie sa, od sposrod licznych dostepnych bonusow na kasynach internet zobaczyc takie, i dlatego byli nagradzajace Twojej energii? Na pierwszy rzut oka to zrobi wydawac sie to latwe \ufffd wystarczy szukac taka moge zapewniac, ktora oferuje najwiecej spinow bez depozytu i bedziesz pieniedzy. Nasze zdaniem nie koniecznie jest technologia informacyjna najlepszy sposob i wbrew pozorom, a z powodu wszystko bonusu, kto wyglada olsniewajacy, przyniesie nawet wiecej frustracji w porownaniu do satysfakcja.<\/p>\n

Aby upewnic sie, ty do z naszej stronie umieszczamy calkowicie tego typu oferowane w kasyno bonusy, byc sprawdzone i bedziesz naprawde warte zakupy, ludzie pakiet bonusow ma miejsce nasza staranna analize. Zwracamy wskazac a takze inni na takie-jak punkty od:<\/p>\n

Wlaczyc kasyna internetowe<\/h2>\n

Nowe kasyna w internecie nie oni maja ale ugruntowanej pozycji na rynku hazardowej. Stad, potwierdzic, ty na pewno daja swoim graczom cechy hazardowe wysokiej jakosci, wraz z rozsadne i przydatne kasyno hazardowe fillip, sprawdzamy, czy i mozesz jaka licencje posiada dochodzenie zupelnie nowe kasyno. Naprawde renomowanymi instytucjami przyznajacymi pozwolenia hazardowe bylo polskie Ministerstwo Finansow, Malta Gaming Authority, Uk Gambling Commission oraz Curacao wiek-gaming.<\/p>\n

Przeciagniecia zaangazowanie i mozesz wydatkow<\/h2>\n

A razem z bonusow bedzie wiaze sie z koniecznoscia rejestracji, czyli podania informacji osobowych oraz wplaceniem niewielkiego depozytu. Aby upewnic sie, jednego analiza wyciaganie kasyno online gwarantuje stale polaczenia i mozesz prywatnosc przesylanych danych finansowych, sprawdzamy, jakiekolwiek licencje uzyskal naciagacz oraz o tym jak szyfruje kontakty.<\/p>\n

Wybor bonusow<\/h2>\n

Nastepnie, gdy upewnimy sie, jednego do dowolne odmiany kasyno online probuje niezawodne, przechodzimy do opinie oferty bonusowej. Zwracamy komentarz w tym, czy oferowany sa motywacja bez depozytu oraz, czy czy nie na danym przedsiebiorstwa hazardowe powitalny bonus sa wystarczajacy duzy, ktora sprawi zwrocic do niego notatke nowych graczy. Upewniamy sie, ze cena bonusow probuje roznorodna i mozesz znajdziemy w niej setki free spinow bez depozytu, bonus reload, dodatkowy bonus cashback lub jakiekolwiek inne bezplatne przedsiebiorstwa hazardowe premia.<\/p>\n

Zasady bonusow<\/h2>\n

Zapoznanie sie posiadanie regulaminem bonusow jest niezbedne do tego, aby zrozumiec, o tym jak mozna zapewnic kasyna bonus, jak go jak najlepiej oraz na jakich warunkach jest to mozliwe go zaplacic. Niefortunnie wszyscy wiemy uzywajac tego, nie robisz wszystkie wytyczne jest przejrzyste i latwe na zrozumienia. W tym celu probujemy na poniewaz wlasciwy sposob przedstawic wymagania danej promocji oraz oni, w dokladnie co nalezy sluchac.<\/p>\n

Gry kasynowe ktorzy maja bonusami<\/h2>\n

Kilka bonusow kasynowych probuje przeznaczonych po prostu dla okreslonych gier. Roznych kasyno hazardowe nakladaja duzo wiecej ograniczenia i mozesz umozliwiaja inicjatywy np. free spinow bez depozytu tutaj w jednym automacie. Rozne strona internetowa hazardowe mogli wyruszyc ktorzy maja bonusow gra stolowe lub po prostu po prostu gra online w kasynie w czasie rzeczywistym. Dokladnie sprawdzamy, w jakich grach jest to mozliwe wykorzystac swoje procedury, aby widziec rozrywka hazardowa z swoich zasadach.<\/p>\n

My wszyscy ekspertow<\/h4>\n

Zastanawiasz sie, czy kiedy powinienes zdecydowac ufac naszej opinii? Jestesmy zespolem ekspertow, w ktorych obstawianie na pieniadze to najwieksza pasje. Znamy branze hazardowa jak sladu i mozesz radzic sobie dobrze zdajemy sobie sprawe, i dlatego bonusy kasynowe sa niezwykle warte uwagi graczy, a to staja sie wylacznie nieszczesliwy chwyt y ktorzy maja bonusow oferowanych przez kasyno online, i to znajdziesz poczatek, to niedawno w nowym przedsiebiorstwa hazardowe filip powitalny oraz rozne kochanie oferty kasynowe beda prawdziwy kuszace i mozesz imponujace.<\/p>\n","protected":false},"excerpt":{"rendered":"

Najlepsze nowe bonusy kasynowe na Polsce Najprawdopodobniej, Aviatrix rtp ty do i jesli swojej wyprawy z hazardem zauwazyles, jednego roznych kasyno daja dodatkowy bonus kasynowy wylacznie dla graczy posiadanie danego regionu lub po prostu kraju. Do naszej stronie znajdziesz nagraj kasyn, i dlatego gotowy obdarowuja bonusami polskich graczy, dlatego mozesz\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-81388","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81388","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=81388"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81388\/revisions"}],"predecessor-version":[{"id":81389,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81388\/revisions\/81389"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81388"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}