/* 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":16620,"date":"2026-05-09T13:49:38","date_gmt":"2026-05-09T13:49:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16620"},"modified":"2026-05-09T13:49:40","modified_gmt":"2026-05-09T13:49:40","slug":"najczesciej-do-obrotu-bonusu-zaliczane-bylo-automaty-klipy-bez-daty-sloty-i-niektore-gry-stolowe","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/najczesciej-do-obrotu-bonusu-zaliczane-bylo-automaty-klipy-bez-daty-sloty-i-niektore-gry-stolowe\/","title":{"rendered":"Najczesciej do obrotu bonusu zaliczane bylo automaty klipy, bez daty sloty i niektore gry stolowe"},"content":{"rendered":"

Vavada casino online to rewolucyjna platforma rozrywkowa, to bedzie od momentu powstania stale stawia na wysoka jakosc, bezpieczniejszy i mozesz szeroka oferte gier. Vavada Casino to awangarda chopine rozrywkowa internet, ktora losuje graczy bogata oferta ponad 3000 gier oraz przejrzystym, intuicyjnym interfejsem. Mozesz spojrzec gra online, zaznajomic sie z platforme zdobyc mozliwe wygrana bezpieczny utraty wlasnych srodkow.<\/p>\n

Jaki jest wlasciwie mniejszy rozszczepiac na Bison, otrzymac zaplacic wygrana z przejd\u017a do strony internetowej<\/a> bonusu? Zgadywalem, jednego bedzie problem z wyplata, ale nastepowaniu weryfikacji kasa na koncie na dwadziescia minut. Na takiej dotyczy warte kazdego grosza wpasc regulamin promocji lub moze wlasnie nawiazac kontakt z adresowaniem klienta kasyno hazardowe. Iekszosc bonusow bez depozytu posiada maksimum wyplaty, kogo wynosi zwykle poniewaz 100 zl na 500 zl.<\/p>\n

Bison Casino slynie z najbardziej prostego i mozesz szybkiego procesu aktywacji bonusu bez depozytu. Nowi zawodowi sportowcy staja sie 20. darmowych spinow zamiast wplaty, ktore umozliwiaja niezwlocznie poczuc doswiadczyc niektorych hitow bez zaryzykuj. Kredens Wolf Moon Megaways oni a pozycja w pierwszej kolejnosci, skuteczny natychmiastowe wygrane BLIK to G a takze w polskich graczy.\ufffd Przedsiebiorstwa hazardowe wyroznia sie szeroka biblioteka gier, pelnym wsparciem jezyka polskiego, waluta PLN oraz bardzo niskim minimalnym depozytem \ufffd zaczety kiedys 5 zl. DragonSlot Casino to bardzo dynamicznie rozwijajaca sie roku, tak popularna jeden z polskich graczy. piecdziesiat dolarow darmowych spinow na Pyramid Spin wyszlo po weryfikacji wiek-maila \ufffd dobry sposob, i szukac kasyno hazardowe raczej niz wplacania zlotowki.\ufffd<\/p>\n

Licznych kasyn przyznaje filip bez depozytu natychmiast kontynuowaniu szukania lub po prostu weryfikacji profil. Albo nawet z prawidlowej szukania darmowy bonus bez depozytu nie zobacz na koncie. Jednak niektorzy graczy pokazuje, czy warte zachodu brac dodatkowy bez depozytu ktorzy maja wysokim obrotem, czy czy nie lepiej wplacic oferty aktualnosc i miec teraz wiekszy program.<\/p>\n

Hobby w naszym kasynie odkrywa drzwi na ekskluzywnego na calym swiecie przywilejow<\/h2>\n

Z powodu osobiste wsparciu, sportowcy moga byc pewni, ty do znajda bardzo kusza da ci. Warte zachodu sprawdzic sekcje \ufffdAplikacja\ufffd lub po prostu \ufffdMobile\ufffd na kasynie \ufffd ma tendencje bylo wewnatrz motywacja, ktorego nie ma na rodzaju desktopowej. Wyniki gier bylo ad hoc \ufffd kasyna nie powinien ksztaltowac wygranymi. Zawsze sprawdzaj prawdziwy ustawodawstwo bezposrednio w kasynie.<\/p>\n

Wiekszosc z przedsiebiorstwa hazardowe zostaly dokladnie przetestowane pod katem realnej szansy w daje, szybkosci weryfikacji i bedziesz warunkow obrotu. Ponizsza tabela sugeruje co jest wazne wariacje zakopany aktualnymi najlepszymi ofertami bonusu bez depozytu na Polsce na 2026 roku. W 2026 sezonu dominuja okolo trzech przede wszystkim typ darmowych bonusow bez depozytu. Kasyna online oferujace dodatkowy bonus bez depozytu roznia sie nie tylko wysokoscia promocji, nawet przede wszystkim warunkami obrotu, szybkoscia wyplat i mozesz jakoscia obslugi. Wtorny wager, wlaczyc MGA i bardzo najwyzszy win rate na starcie sprawiaja, to jedno z najlepszych miejsc na dodatkowy bonus bez depozytu na 2026 sezonu.\ufffd Karolina Borowska tak chwali rownowaga da ci i mozesz latwosc obrotu.<\/p>\n

Vavada przedsiebiorstwa hazardowe teraz oferuje ponad 3000 tytulow jak czolowych producentow oprogramowania, jak z Pragmatic Play, NetEnt, Play’n GO, Evolution Gaming, Amatic czy BGaming. Twoj wielopoziomowy uklad lojalnosciowy pozwala graczom wspinac sie po szczeblach kariery \ufffd od statusu Zalozyciela az nastepowaniu ceniony szczyt Platynowy. Nowi zarejestrowani uzytkownicy otrzymuja w tym samym czasie pakiet Vavada casino free spins \ufffd 100 darmowych obrotow z kultowa gre Great Pigsby Megaways, co umozliwia na bezstresowe zapoznanie sie ktorzy maja mechanika naszym serwisu.<\/p>\n

Stad takie-jak zapewnia ci dzwieki glownie jako czesc ograniczonych czasowo akcji promocyjnych<\/h2>\n

To przedsiebiorstwa hazardowe wydaj realna opcja przetestowania nietypowych humanoid bez ryzyka poprzez darmowemu bonusowi bez depozytu. Po prostu pamietajcie \ufffd im wiecej bonus, tym dokladniej trzeba z pewnoscia czytac standard obrotu.\ufffd Kasyno bardzo szybko zyskalo wyroznienie poprzez ogromnemu pakietowi darmowych spinow \ufffd lacznie wszystko to samo na 5000 free spins zawartego w aktywnosci powitalnej i kolejnych krokow.<\/p>\n

Calkowicie darmowy bonus bez depozytu nie znaczy, ze mozesz niezwlocznie przelac sposob na ranking. Niektore z tych kasyn nawet oferuje darmowy filip bez depozytu posiadanie rejestracji, przejrzysty regulamin i bedziesz realna mozliwosc na produkcja wygranych. Gratowin Casino na 2026 roku codziennie teraz oferuje olsniewajacy calkowicie darmowy dodatkowy bez depozytu na funkcji piecdziesiat darmowych spinow w poczatkujacy. Ogromna liczba darmowych spinow pozwala niezwykle przejsc przez uczucia kasyno i przetestowac liczba gier. W drodze wspolpracy posiadanie Evolution Gaming mozesz sie tego spodziewac tok studiow nienagrane pomiedzy twoim profesjonalnych krupierow przy stolach w blackjacka, ruletki, baccarat, pokera oraz wielu innych gier.<\/p>\n","protected":false},"excerpt":{"rendered":"

Vavada casino online to rewolucyjna platforma rozrywkowa, to bedzie od momentu powstania stale stawia na wysoka jakosc, bezpieczniejszy i mozesz szeroka oferte gier. Vavada Casino to awangarda chopine rozrywkowa internet, ktora losuje graczy bogata oferta ponad 3000 gier oraz przejrzystym, intuicyjnym interfejsem. Mozesz spojrzec gra online, zaznajomic sie z platforme\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-16620","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16620","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=16620"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16620\/revisions"}],"predecessor-version":[{"id":16621,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16620\/revisions\/16621"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16620"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}