/* 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":30416,"date":"2026-05-16T12:26:01","date_gmt":"2026-05-16T12:26:01","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30416"},"modified":"2026-05-16T12:26:02","modified_gmt":"2026-05-16T12:26:02","slug":"kiedys-poprawnie-angazowac-dodatkowy-na-darmowe-obroty-pewny-wlasnej-pieniedzy","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kiedys-poprawnie-angazowac-dodatkowy-na-darmowe-obroty-pewny-wlasnej-pieniedzy\/","title":{"rendered":"Kiedys poprawnie angazowac dodatkowy na darmowe obroty pewny wlasnej pieniedzy?"},"content":{"rendered":"

Technologia informacyjna wlasnie calkowicie darmowy motywacja zawiera jeden z kilku do czego, i dlatego przyciagaja graczy do kasyn https:\/\/betcriscasino-pl.com\/pl-pl\/<\/a> online. Nagie fillip bylo specjalnymi ofertami, i to sportowcy moga otrzymac przy dokonywaniu wplat z masz konta, uzywajac zapewnilem na konkursach lub spelniajac jasne standardy. Konsekwentnie bonus bezdepozytowy oni przelomy w konto gracza, w ktorym przecietny potrzebny depozyt nie jest oczekiwany.<\/p>\n

Uniwersalne bonusy byli w stanie obejmowac dodatkowe sposob na gre, darmowe spiny z automatach posiadanie konieczny trzymac, nagrody lojalnosciowe czy nawet osobiste funkcja. Sa one swoista zaplacilem, ktora przynosi dodatkowa wart w spotkania hazardowego. Ale filip bez depozytu blyszczy sposrod wszelkiego rodzaju bonusow.<\/p>\n

Od sama tozsamosc sugeruje, filip bez depozytu ani jeden z nich od gracza wplacania z srodkow z konto, osiagnac dodatkowe sposob na gre lub po prostu po prostu bezplatne spiny. To kuszace dostawca w nowych graczy, ktorzy chca probowac i inne obstawianie, nie ponoszac astat tym przygody. Posiadania aplikacji o z powodu specjalnego kodu bonusowego lub moze zamiast mozesz uwolnic masz wyciaganie bonusy kasynowe na poczatkujacy.<\/p>\n

Przed aktywacja bonusu warte zachodu sprawdzic standardy oferty (okolicznosc obrotu, potrzebny kod kuponu, nazwa potrzeba bonusu) i bedziesz porownac rozne rodzaje bonusow. Kiedy masz taka opcja, technologia informacyjna mozesz sprawdzic najnowsze bonusy i bedziesz wybrac dla siebie ten ktorzy maja najnizszym wagerem i i mozesz podstawowa metoda weryfikacji konta.<\/p>\n

Kiedy sam masz wybieram na przetestowanie gier, skuteczny przy okazji interesuja Cie bezkosztowe spiny bonusy, oni zobacz taka oferte, na ktorej solo filip zapewni ci powinienes takze rozwazyc gra na niesamowite przedzial czasowy. Ilustrowane zagraniczne kasyno hazardowe Vulkan Bet, Lemon Casino oba rozne inne dobre kasyno byloby powiazane, naturalnie zgodnie z wlasnych aktualnej zapewni ci i bedziesz legalnosci na kraju.<\/p>\n

Kiedy masz bonus bez depozytu w oku, musisz uzyc isc do rejestracja w celu poziomy. Haslo promocyjni haslo bonusowy poda Te osoby agent. Mozesz wykorzystac nawiazac kontakt z adresowaniem wlasciciela. Przypuszczenie konto w pewnym sensie, znajdz sposob, skorzystac z bonusu bez depozytu. To czy wymagana probuje weryfikacja numeru telefonu i bedziesz tokoferol-mail wykorzystuje wewnetrznej zasady casino.<\/p>\n

Co daje calkowicie darmowy siec bonus?<\/h2>\n

Poprzez casino internet motywacja bez depozytu, sportowcy funkcje opcja zapoznania sie ktorzy maja platforma, wyprobowania roznych gier i bedziesz odczucia prawdziwego dreszczyku odczuwanie, bez potrzeby uzywanie twoich srodkow. Bez depozytu dodatkowy bonus jako darmowa kasa lub moze wlasnie FS ma troche kluczowych korzysci z.<\/p>\n

    \n
  1. Na poczatek, dadza ci graczom sposob na zdobycie pierwszych doswiadczen w kasynie i mozesz zapoznanie sie z roznymi grami.<\/li>\n
  2. Drugi, byli w stanie sprobowac srodki i sposoby gra bezpieczny utraty gotowki.<\/li>\n
  3. Kontynuowaniu trzecie, chociaz wygranej przez dodatkowy bez depozytu, sportowcy mogli zeby prawdziwe pieniadze masz nagrode, dokladnie co czyni te promocje tak atrakcyjna.<\/li>\n<\/ol>\n

    Motywacja bez depozytu \ufffd to bedzie?<\/h2>\n

    Filip bez depozytu na FS lub moze wlasnie jest darmowa kasa to unikalna cena, to pozwol w wielu kasynach internet. Masz to pewien wersji motywacja bez depozytu, ktory sportowcy mogli dostac bez potrzeby dokonywania wplaty na swoje konto. Oznacza to, ze mozna dostepnego dodatkowych srodkow na gre lub po prostu darmowych spinow na automatach bez potrzeby ryzykowania twoich pieniedzy.<\/p>\n

    Bez depozytu motywacja jest szczegolnie atrakcyjny dla nowych graczy, ktorzy chca probowac kasyno online i inne gry, zanim zdecyduja sie z zdeponowanie swoich srodkow. Daje im oni mozliwosc zapoznanie sie posiadanie platforma, zasobami gier oraz interfejsem, bez potrzeby wydatkow twoich gotowki. To swietny sposob z zakupu pierwszych doswiadczen hazardowych i mozesz poczucia emocji, i dlatego towarzysza grze do kasynie.<\/p>\n

    Wariacje bonusow bez depozytu – najnowsze fillip<\/h2>\n

    Bonus bez depozytu moze uznac rozne formy. Roznych kasyno hazardowe dadza ci atrakcyjne promocje jest jeszcze wiecej mozliwosc dla gre, ktore mozna korzysc z na okreslone obstawianie. Rozne inne byli w stanie oferowac bezplatne spiny na automatach, umozliwianie graczom rozgrywke bez ponoszenia ryzyka.<\/p>\n

    Niezaleznie od modele, motywacja bez depozytu daje graczom wybor wygrania prawdziwych gotowki, w przypadku, spelnia okreslone wymagania obrotu. Warto znalezc, ty do dodatkowy bonus bez depozytu jest czesto podreczny dla nowych graczy, zawartego w pakietu powitalnego. Moze byc potrzebne zarejestrowanie konta na kasynie i mozesz potwierdzenie tozsamosci.<\/p>\n","protected":false},"excerpt":{"rendered":"

    Technologia informacyjna wlasnie calkowicie darmowy motywacja zawiera jeden z kilku do czego, i dlatego przyciagaja graczy do kasyn https:\/\/betcriscasino-pl.com\/pl-pl\/ online. Nagie fillip bylo specjalnymi ofertami, i to sportowcy moga otrzymac przy dokonywaniu wplat z masz konta, uzywajac zapewnilem na konkursach lub spelniajac jasne standardy. Konsekwentnie bonus bezdepozytowy oni przelomy w\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-30416","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30416","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=30416"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30416\/revisions"}],"predecessor-version":[{"id":30417,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30416\/revisions\/30417"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30416"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}