/* 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":30898,"date":"2026-05-16T13:06:54","date_gmt":"2026-05-16T13:06:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30898"},"modified":"2026-05-16T13:06:55","modified_gmt":"2026-05-16T13:06:55","slug":"szybka-placa-ktorzy-maja-bonusem-bez-depozytu-jestes-w-stanie","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/szybka-placa-ktorzy-maja-bonusem-bez-depozytu-jestes-w-stanie\/","title":{"rendered":"Szybka placa ktorzy maja bonusem bez depozytu: jestes w stanie?"},"content":{"rendered":"

Bardzo wazne kryteria w bonusu bez depozytu<\/h2>\n

Premia bez depozytu to swietny sposob w porodu obstawianie do kasynie siec, jednak warte kazdego grosza skoncentrowac sie na par kluczowych do czego, ktore moga wplynac w wielkich korzysci z takiego bonusu. Ponizej kilka z tamtych:<\/p>\n

    \n
  1. Ekstremalny fundusze Wiele kasyna internetowe mogli ograniczone maksymalna kwote, ktora mozesz wygrac ktorzy maja bonusu bez depozytu. Potwierdzenie ten rodzaj ograniczenie przed aktywacja bonusu.<\/li>\n
  2. Standard dotyczace przychodow Zwykle bedziesz chcial zmienic otrzymany bonus okreslona liczba razy, tuz przed toba go rozwidlic. Uzasadnienie, i sa tego typu standard.<\/li>\n
  3. Maksymalne polaczenie Roznych kasyna mogli ograniczone maksymalna ceny, ktora mozesz postawic za pomoca bonusu bez depozytu.<\/li>\n
  4. Jesli wezwany jest wlasciwie kod bonusowy? Roznych reklama moga potrzebowac specjalnego kodu bonusowego. Zapewnisz, ze, masz go, wczesniej grac.<\/li>\n
  5. Moze byc ograniczenie gier? Dodatkowy bez depozytu moze byc uzyteczny tylko w wyznacz gra. Sprawdz, czy czy nie gry, do i dlatego chcialbys aby sobie poradzic, przyjdz.<\/li>\n
  6. Czy czy nie kazdy moze skorzystac z bonusu? Kilka premia oni dostepne tylko nowych graczy i graczy ktorzy maja okreslonych krajow.<\/li>\n
  7. Przyklejac (czy to mozliwe nie koniecznie jest oczekiwany przyklejac?) Nawet gdy dodatkowy bez depozytu, kiedys sama tozsamosc sugeruje, ani jeden z nich wplaty, kilka kasyno hazardowe moga potrzebowac minimalnej wplaty, zrobic wchodzic w interakcje filip.<\/li>\n<\/ol>\n

    Rozne wersje bonusu bez depozytu<\/h2>\n

    Premia bez depozytu oni kusza kampanie, te oferte wiecej korzysci dla graczy. Jest one swietnym sposobem w przetestowanie gier i mozesz kasyn pewny. Nawet, poniewaz kazda umowa, maja masz plusy i minusy.<\/p>\n

    Bezplatne spiny bez depozytu<\/h2>\n

    Technologia informacyjna popularny rodzaj bonusu bez depozytu, aby graczom do bezplatne obroty na wybranych automatach na gier. Dobrym aspektem jest opcja przetestowania gier slotowych bezpieczny, wszystko to samo zazwyczaj podobne spiny funkcje okreslone ograniczenia zwyciestwo i bedziesz potrzebuja honor warunkow obrotu przed wyplata srodkow.<\/p>\n

    Pozyczke premiowy<\/h2>\n

    Wiele kasyna online daja zaciagnac premiowy jest motywacja bez depozytu. To oznacza, ze zawodowi sportowcy dostac pewna kwote pieniedzy do twojego uzytku na kasynie. Progresywnie popularniejsze DudeSpin kasyno online<\/a> zwykle sa kasyna z bonusem bez depozytu, ktore pozwalaja na bez wysilku przeglad gier pewny. Jeszcze warte kazdego grosza wiedziec, ze takie-jak da ci czesto funkcje wysokie standardy obrotu lub po prostu wiecej wymagania, takie-jak zadanie odblokowania bonusu kryptowalutowego.<\/p>\n

    Cashback<\/h2>\n

    Roznych kasyno hazardowe dadza ci cashback byc oznacza bonusu bez depozytu. Jest to forma zwrotu ugryzienie przegranych srodkow. To moze byc kusza w graczy, ktorzy chca zminimalizowac niebezpieczenstwo, jednak korzystne rozumiec, ty na pewno cashback ogolnie dotyczy tylko okreslonych gier i ma oczywiste ograniczenia.<\/p>\n

    Adopcje w kilka obstawianie i mozesz automaty do gier<\/h2>\n

    Kilka motywacja bez depozytu oni sa ograniczone na okreslonych gier lub po prostu automatow. Masz to dobra swietna okazja na wyprobowania nowych tytulow, ale moze czuc sie powazne, w przypadku, preferujesz inne gra wideo.<\/p>\n

    Bonusy VIP i mozesz lojalnosciowe bez depozytu<\/h2>\n

    Roznych kasyno daja specjalne bonusy bez depozytu w swoich niezwykle lojalnych graczy. Nawet jesli jest one kuszace, chca zazwyczaj duzego zaangazowania i sponsorowania grania.<\/p>\n

    Krotka wyplata ktorzy maja bonusem bez depozytu probuje mozliwosc, jednak zawsze laczy sie posiadanie pewnymi warunkami. Kasyna online daja rozne rodzaje bonusow, takie-jak darmowe spiny jesli czy nie pozyczke premiowy, wykazac jak najlepiej na obstawianie bez koniecznosci wplacania twoich srodkow.<\/p>\n

    Nawet zanim sportowcy beda mogli zaplacic masz zyski, zwykle musza zobaczyc bardzo jasne standard polacz obrotu, ma na mysli to, ze musza postawic okreslona kwote przed wyplata srodkow. Wiele kasyno mogli i wymagac weryfikacji tozsamosci przed wyplata. Wiec zawsze korzystne analizowac warunkami bonusu tuz przed jego aktywacja.<\/p>\n

    Pozytywy i wady kasyn ktorzy maja bonusem bez depozytu<\/h2>\n

    Kasyno hazardowe oferujace fillip bez depozytu ciesza sie coraz wiekszym uznaniem na pewno jednego z graczy siec. Takie kusza promocje pozwalaja graczom przetestowanie pewnych gier i uslug przedsiebiorstwa hazardowe, bez koniecznosci wplacania z srodkow. Nie tylko to jest przygnebia dostep do pokoju wejscia do nowych graczy, ale takze daje doswiadczonym graczom mozliwosc eksploracji nowych platform bez ryzyka finansowego.<\/p>\n

    Wszystko to samo, jak kazda oferta, zachety bez depozytu maja zarowno masz zalety, od i mozesz wiezien. Z jednej strony, ulatwiaja one graczom proba kasyno i jego niesamowitym gier bez potrzeby inwestowania z pieniedzy. Dostarczaja jak mozesz mozliwosc wygranie prawdziwych pieniedzy.<\/p>\n","protected":false},"excerpt":{"rendered":"

    Bardzo wazne kryteria w bonusu bez depozytu Premia bez depozytu to swietny sposob w porodu obstawianie do kasynie siec, jednak warte kazdego grosza skoncentrowac sie na par kluczowych do czego, ktore moga wplynac w wielkich korzysci z takiego bonusu. Ponizej kilka z tamtych: Ekstremalny fundusze Wiele kasyna internetowe mogli ograniczone\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-30898","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30898","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=30898"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30898\/revisions"}],"predecessor-version":[{"id":30899,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30898\/revisions\/30899"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30898"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}