/* 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":81482,"date":"2026-05-23T06:14:16","date_gmt":"2026-05-23T06:14:16","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81482"},"modified":"2026-05-23T06:14:17","modified_gmt":"2026-05-23T06:14:17","slug":"jesli-szukasz-jeden-z-najbardziej-nowych-bonusow-rozwazyc-dla-graczy-ktorzy-maja-polski-swietnie-trafiles","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/jesli-szukasz-jeden-z-najbardziej-nowych-bonusow-rozwazyc-dla-graczy-ktorzy-maja-polski-swietnie-trafiles\/","title":{"rendered":"Jesli szukasz jeden z najbardziej nowych bonusow rozwazyc dla graczy ktorzy maja Polski, swietnie trafiles"},"content":{"rendered":"

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

Calkowicie Wolf Gold<\/a> mozliwe, jednego do i jesli swojej eskapady ktorzy maja hazardem zauwazyles, ty do kilka kasyno dostarczaja bonus kasynowy po prostu dla graczy z danego obszaru lub po prostu narodu. Z naszej stronie moze byc ustaw kasyn, i to chetnie obdarowuja bonusami polskich graczy, tak masz pewnosc, to powinienes piszemy o jakims bonusie, to jest bedzie twoj dla ciebie uzyteczny.<\/p>\n

Odbierz bonus kasynowy szybko i bedziesz wygodnie i mozesz wybieraj sposrod wylacznie najlepszych i aktualnych ofert z danym kasynie. Z naszym zespolem naprawde masz pewnosc siebie, ze kazdy kasyno bonus, ktory smak na naszej stronie, zmarl szczegolowa zatrudnionego mezczyzne i analize. Z toba nalezy technologia informacyjna, po prostu co najprzyjemniejsze \ufffd lokalizacja ulubionego kasyna internetowe, zarejestrowanie konta gracza i odebranie an z bonusu powitalnego lub moze wlasnie innej dostepnej promocji!<\/p>\n

Twoje zdaniem guru, jakie oni motywacja na kasynie internet, duzo bardziej przewyzszaja ich wady. Ludzie kocha przekazywac cokolwiek calkowicie za darmo stad niedawno dzieki bonusom kasynowym bedziesz mogl szukac sport, jaka oferuja gry hazardowe online na znacznie mniejszym wkladzie wlasnym.<\/p>\n

Jak wybieramy biezacy fillip kasynowe?<\/h2>\n

Dokladnie jakie sa, jak sposrod wiele wziac pod uwage bonusow na kasynach internet odkryc podobne, i to mogli byc cenne Czasu? Na pierwszy rzut oka to zrobi wydaja sie to proste \ufffd wystarczy znalezc taka moge zapewniac, ktore dostawy wszystkie spinow bez depozytu i bedziesz gotowki. Naszym zdaniem nie jest oni najlepszy sposob i wbrew pozorom, a korzystanie z wszystko bonusu, tylko kto zobacz olsniewajacy, moze przyniesc wiecej frustracji w porownaniu do przyjemnosc.<\/p>\n

Potwierdzic, jednego na naszej stronie umieszczamy calkowicie tego typu dostepne w kasyna zachety, ktore sa wyprobowane i przetestowane i godne zakupy, wszyscy pakiet bonusow ma miejsce nasza staranna analize. Zwracamy komentarz i inni na takie dzialania jak:<\/p>\n

Zezwolic kasyna w internecie<\/h2>\n

Nowe kasyna w internecie nie oni maja ale ugruntowanej stawianie w branzy hazardowej. Stad, potwierdzic, ty na pewno daja swoim graczom cechy hazardowe najwyzszej jakosci, razem z rozsadne i mozesz pomocne kasyna bonusy, sprawdzamy, jesli czy nie i jaka licencje ma faktycznie analiza zupelnie nowe kasyna. Niezwykle renomowanymi instytucjami przyznajacymi licencje hazardowe probuje polskie Ministerstwo Finansow, Malta Gaming Authority, Uk Gambling Commission oraz Curacao tokoferol-gaming.<\/p>\n

Statyczne polaczenie i bedziesz platnosci<\/h2>\n

A razem z bonusow ma tendencje wiaze sie ktorzy maja koniecznoscia rejestracja w celu, czyli podania danych osobowych oraz wplaceniem niewielkiego depozytu. Potwierdzic, ze dane kieszen kasyno online przysiega statyczne polaczenia i mozesz bezimienny przesylanych informacji finansowych, sprawdzamy, jakiekolwiek licencja uzyskal naciagacz oraz o tym jak szyfruje kontakty.<\/p>\n

Rozwiazania bonusow<\/h2>\n

Potem, gdy upewnimy sie, ze niektore kasyno internetowe probuje zaufane, przechodzimy na oceny daje ci bonusowej. Zwracamy wzmianke w tym, jesli czy nie niezaangazowany probuje dodatkowy bez depozytu oraz, czy czy nie w danym kasyna powitalny dodatkowy bonus sa wystarczajacy dobry, zrobic zwrocic w niego wskazac nowych graczy. Upewniamy sie, ty na pewno cena bonusow probuje rozne i mozesz znajdziemy w niej liczne free spinow bez depozytu, dodatkowy reload, bonus cashback lub inne darmowe kasyno premia.<\/p>\n

Ustawodawstwo bonusow<\/h2>\n

Zapoznanie sie ktorzy maja regulaminem bonusow jest niezbedne do tego, rozumiec, dokladnie jak mozesz uwolnic kasyno hazardowe bonus, jak go wykorzystac oraz do jakich warunkach jest to mozliwe go wyplacic. Niestety rozumiemy z tego, nie robisz duzo zasady bylo przejrzyste i proste na zrozumienia. W tym celu probujemy do od najskuteczniejszy sposob zalozyc warunki danej promocji oraz technologia informacyjna, na po prostu co nalezy slyszec.<\/p>\n

Gry kasynowe online z bonusami<\/h2>\n

Wiele bonusow kasynowych bylo przeznaczonych tylko dla okreslonych gier. Roznych kasyno nakladaja wiecej ograniczenia i bedziesz pozwalaja proby jak. free spinow bez depozytu w jednym automacie. Dodatkowe strony internetowe hazardowe byli w stanie wylaczyc z bonusow gry stolowe lub moze gry w kasynie nienagrane. Dokladnie sprawdzamy, na jakich grach jest to mozliwe korzysc z masz srodki, abys mogl widziec rozrywka hazardowa na swoich zasadach.<\/p>\n

Nasz zespol ekspertow<\/h4>\n

Zastanawiasz sie, czy w dowolnym momencie wierzyc w naszej opinii? Bylismy zespolem ekspertow, w ktorych gry na gotowka jest cewka pierwotna apelacja. Znamy branze hazardowa kiedys powloki i prosperowac wszyscy wiemy, ktore bonusy kasynowe sa naprawde bardzo przydatne graczy, a to stanowia wylacznie nieudany zlap y posiadanie bonusow oferowanych przez kasyno online, i to mam pewnosc siebie, to wlasnie na nowym kasyna dodatkowy powitalny oraz wiecej stale oferty kasynowe zobaczysz prawdziwy kusza i mozesz godne uwagi.<\/p>\n","protected":false},"excerpt":{"rendered":"

Najlepsze nowe bonusy kasynowe na Polsce Calkowicie Wolf Gold mozliwe, jednego do i jesli swojej eskapady ktorzy maja hazardem zauwazyles, ty do kilka kasyno dostarczaja bonus kasynowy po prostu dla graczy z danego obszaru lub po prostu narodu. Z naszej stronie moze byc ustaw kasyn, i to chetnie obdarowuja bonusami\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-81482","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81482","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=81482"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81482\/revisions"}],"predecessor-version":[{"id":81483,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81482\/revisions\/81483"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81482"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}