/* 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":30886,"date":"2026-05-16T13:06:10","date_gmt":"2026-05-16T13:06:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30886"},"modified":"2026-05-16T13:06:10","modified_gmt":"2026-05-16T13:06:10","slug":"jestes-w-stanie-jest-to-mozliwe-uzyskac-wspolnie-z-ktorzy-maja-bonusu-bez-depozytu","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/jestes-w-stanie-jest-to-mozliwe-uzyskac-wspolnie-z-ktorzy-maja-bonusu-bez-depozytu\/","title":{"rendered":"Jestes w stanie Jest to mozliwe Uzyskac, Wspolnie z ktorzy maja Bonusu Bez depozytu?"},"content":{"rendered":"

Nawet gdy motywacja kasynowe bez depozytu podlegaja okreslonym warunkom i mozesz ograniczeniom, jest wlasciwie one standardowa oferta promocyjna na kasynach internet. Zasady takie wlaczaja na ma ochrone operatora platformy hazardowej oraz gwarancje uczciwosci rozgrywki w uzytkownikow.<\/p>\n

Przed zaakceptowaniem jakiejkolwiek premii sportowcy chca poznac regulaminem promocji, tylko kto identyfikuje kryteria istotne obrotu bonusem oraz procedure zarobki srodkow. Wspolne tych zasad umozliwia korzystania z bonusow zgodnie z polityka serwisu i mozesz przyspiesza szanse na produkuje wygranych.<\/p>\n

Odpowiednie Obstawianie<\/h2>\n

Ludzie dodatkowy posiadanie darmowa gre miec swoja zapisz dopuszczalnych gier. Zapewnia to, ze nie powinienes idealny wykorzystac swoich darmowych spinow lub moze gotowki na dowolna gre. Celem z zasady bylo skierowanie klientow do najpopularniejszych lub niedawno wprowadzonych gier z kasynie.<\/p>\n

Wiele zachety mogli dotyczyc niektorych gier, jak rowniez wiecej moga byc zadanie po prostu do jednej. Przestrzeganie z tych wymaga jest bardzo wazne, jak uzywanie do niedopuszczalne gra wideo moze skutkowac anulowaniem bonusu i utrata wszystkich z nim wygranych.<\/p>\n

Procentowy Omowilem Obstawianie<\/h2>\n

Procentowy udzielilem sie gry identyfikuje, jaki procent myslenie zakladow do poszczegolnych grach jest wlasciwie zaliczany w potrzeby obrotu bonusem z kasynach siec bez depozytu. Produkowac spotkac standardy polacz obrotu bonusem, nalezy udaj sie, zeby, jaki procent wkladu kazda gra online wnosi w realizacji z tamtych wymaga. Automaty do gier w gry zwykle wliczaja sie na sto% na obrotu bonusem. Gra online stolowe, takie-jak vingt-et-un lub po prostu ruletka, zwykle licza sie tutaj w x%. Jak, kiedy powinienes zdecydowac kryteria obrotu wynosi 100 PLN, obliczony w sprawie wartosci dziesiatka PLN na automatach zwieksza szansa w sprawie x PLN. Laponczyk ustalony do blackjacku przyspiesza szansa tylko w sprawie jednosc PLN. Indecorum z nich zasad pozwala szukac gra online, i dlatego latwiej spelnia warunki przewalutowania srodkow bonusowych na prawdziwe pieniadze.<\/p>\n

Ograniczenie Poziom Zakladu<\/h2>\n

Ograniczenie kwoty zakladu oznacza, jednego kasyna internetowe z bonusem bez depozytu ustalaja maksymalna naprawde wart z 1 zakladu oczywiscie, jesli dostepnosci promocji. Premia bez depozytu wlaczaja bardzo jasne warunki obrotu, ktore sie zdarzaja ustalone z operatora hazardowego. Najwyzsza godny pojedynczego zakladu zawsze wynosi jak te dwa PLN na 5 PLN, nawet to ograniczenia moga sie roznic zgodnie z systemy. Przekroczenie dozwolonej poziom zakladu prowadzi do anulowaniem bonusu. Sportowcy musza patrzec ograniczenia przed rozpoczeciem gra online i nie najlepiej ustalonych przekonania.<\/p>\n

Maksymalna Wygrane<\/h2>\n

Wszystko bonusow bez depozytu identyfikuje z gory maksymalna kwote, jaka obstawiajacy to zrobi wygrac. Takie jak 1xBit<\/a> maksimum wygrana chronia kasyno hazardowe przed duzymi stratami. To oznacza, ze, chociaz wygrasz jackpot korzystajac ktorzy maja darmowych spinow lub moze bonusu bez depozytu, prawdopodobnie nie bedziesz moc wyplacic calej stopien. Wolnosc z tamtych limitow bylo rozkazujaca, produkowac zmienic masz kryterium i miec wartosc wiedza.<\/p>\n

Data Potrzeba<\/h2>\n

Fillip bez depozytu funkcje okreslona date waznosci. Sa bardzo wazne z okreslony czas od momentu twoje wlasne odmiana, zawsze jak 24 kilka godzin na tygodnia. Pozostalo motywacja i bedziesz zwiazane z nimi zalety mogli zobaczyc uniewaznione nastepnie okresie. Sportowcy swiadomi w limitu czasowego mogli maksymalnie jak najlepiej wskazowki bonusowe i bedziesz w pelni korzystac z oferty kasyno.<\/p>\n

Czy Naloz Bonusowe Sa niezbedne?<\/h2>\n

Zasady bonusowe staja sie kiedys standardowa metoda uzyskiwania bonusow na kasynach online z Polsce. Otrzymac konkretna takze mam promocyjna, przedstawiciel wpisywal kod bonusowy i kiedy rejestracja w celu lub po prostu po prostu na wplacie depozytu.<\/p>\n

A takze ulepszeniami technologii oraz wdrazaniem sposoby poprawiajacych wygode uzytkownika, kazdego kasyn internetowych do Polsce wprowadzila automatyzuja spadek bonusow lub po prostu po prostu wyzwala jednym kliknieciem.<\/p>\n

Zmiana ta pozwala graczom latwiej miec fillip bez koniecznosci recznego wpisywania kodow. Automatyczne rozwiazania redukuja liczbe bledow i mozesz wlaczaja operatorom proba sprzedazy spersonalizowanych promocji na podstawie preferencji oraz doswiadczenia klienta.<\/p>\n

Roznych sieci hazardowe online na Polsce mimo wszystko potrzebuja podania kodu bonusowego, zwlaszcza liczbie atomowej 85 promocjach ograniczonych czasowo. Aby skorzystac wszystkich wziac pod uwage ofert, nalezy zawsze udaj sie, zeby standardy promocji lub po prostu po prostu komunikaty operatora.<\/p>\n

Nie dostarczy sie calun, ty na pewno premia bez depozytu do kasynach internet umozliwiaja porodu obstawianie bez koniecznosci wplacania wlasnych srodkow. Dodatkowy bez depozytu pozwala nowym uzytkownikom uruchomic gre raczej niz wplaty jego pieniedzy. Ta przelomy pomaga ci gre pewny utraty jego srodkow i dostarcza mozliwosc na wygranie prawdziwej gotowki. Bedziesz probuje zakonczenie zysku ktorzy maja tej da ci, jednak standardy wygrana sa zwykle polaczone.<\/p>\n","protected":false},"excerpt":{"rendered":"

Nawet gdy motywacja kasynowe bez depozytu podlegaja okreslonym warunkom i mozesz ograniczeniom, jest wlasciwie one standardowa oferta promocyjna na kasynach internet. Zasady takie wlaczaja na ma ochrone operatora platformy hazardowej oraz gwarancje uczciwosci rozgrywki w uzytkownikow. Przed zaakceptowaniem jakiejkolwiek premii sportowcy chca poznac regulaminem promocji, tylko kto identyfikuje kryteria istotne\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-30886","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30886","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=30886"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30886\/revisions"}],"predecessor-version":[{"id":30887,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30886\/revisions\/30887"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30886"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}