/* 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":31172,"date":"2026-05-16T13:21:00","date_gmt":"2026-05-16T13:21:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31172"},"modified":"2026-05-16T13:21:01","modified_gmt":"2026-05-16T13:21:01","slug":"duzo-obstawianie-techniki-dla-zakupow-i-funkcje-sa-identyczne-na-obu-systemach","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/duzo-obstawianie-techniki-dla-zakupow-i-funkcje-sa-identyczne-na-obu-systemach\/","title":{"rendered":"Duzo obstawianie, techniki dla zakupow i funkcje sa identyczne na obu systemach"},"content":{"rendered":"

Oferujemy calodobowa oferte klienta w jezyku polskim przez kamera nienagrane oraz serwis tokoferol-mail z baza prawdziwej informacji usluge na stronie internetowej. Wszystkie funkcje ktorzy maja forma desktopowej przyjda na telefonie.<\/p>\n

Promocje tego typu pozwalaja zwiekszyc rachunek, odzyskac obszar przegranych srodkow lub moze zagrac ktorzy maja dodatkowymi funduszami z okreslonych dniach Freshbet<\/a> tygodnia. Z tego powodu kazdy moze zdobyc troche dopasowanego na swojego rodzaj gra \ufffd nawet gdy, czy faworyzuje sloty, gry stolowe, czy czy nie wnioslem w turniejach. Na platformie jest niezliczonych automatow, gra w czasie rzeczywistym oraz zaklady sportowe. Graczy VIP dostac indywidualny rezyser VIP, premium ograniczenia wyplat, osobiste premia, szybsze zyski i mozesz dostepnosc na wydarzenia specjalne.<\/p>\n

Transmisje jest wlasciwie konkurencyjne, to produkuje, ty do gra to nie tylko emocjonujaca, wszystko to samo jak mozesz moze byc oplacalna<\/h2>\n

W tym samym czasie, z powodu szybkim wyplatom i zaufanemu zespolowi wsparcia dostepnemu 24\/7 z pogawedka na zywo lub po prostu e-mail, mozesz skorzystac z wycelowaniu wygrywaniu duzych nagrod zamiast zadnych zmartwien.<\/p>\n

Kazda wildrobin rodzina sa kilka razy dziennie wzbogacana o premiery, i to sa dostepne w dedykowanej czesc \ufffdNowosci\ufffd<\/h2>\n

Wszystkie funkcje, zachety i mozesz gry przyjda jak, od przy uzyciu komputera. Kiedy powinienes zdecydowac grasz z ruletke, blackjacka lub jakiekolwiek inne gra wideo live i mozesz poniesiesz strate, mozesz uzyc odzyskac dziedzina srodkow \ufffd maksymalnie na 1000 zl tygodniowo. Ludzie nowy trzymac jak mozesz sie dac, wiec jesli grasz kazdego dnia, byc z tego realna wartosc. Mniej niz moze byc kes najwazniejszych plusow i minusow tej sieci \ufffd krotko, dokladnie i po ludzku.<\/p>\n

Wild Robin rowniez oferuje roznych gier \ufffd automaty, gra wideo stolowe, kasyno na zywo, crash games i bedziesz zaklady. Na Wild Robin Casino potrzebujesz dawac karta, przelewem, z powodu na wschod-ksiazeczka kieszonkowa i bedziesz kryptowaluty. Wszystkie funkcje dostepne w rodzaju desktopowej, takie wplaty, wygrana, zachety czy obsluga klienta, dzialaja rowniez na urzadzeniach mobilnych. Kasyno hazardowe rowniez zapewnia roznych metod finansowych, obejmujacy uwaga platnicze, trendy notebook elektroniczne oraz kryptowaluty. Platforma polityczna pozwala typowac co jest wazne ligi i bedziesz zawody z calego swiata, skuteczny przyjazny dla uzytkownika interfejs uzytkownika generuje, ty do jednak szybszy doswiadczeni gracze sa przeznaczone do zamiast problemu.<\/p>\n

Dla technologia-savvy graczy ktore istnieja probuje kryptowaluty, razem z Bitcoin, Litecoin i mozesz Dogecoin, te oferte najszybsze zarobki oraz zaawansowane ograniczenia transakcji. Biblioteka depozytowa jest organizowana do latwy w uzyciu sposoby posiadanie zaawansowanymi filtrami, ktore pozwalaja na szybkie lokalizacja gier skupiania sie preferowanego firma, odrebnej linii volatility, tematyki, obecnosci postaci bonusowych czy czy nie wielkosci potencjalnych wygranych. Weekendowy reload dodatkowy bonus zawiera piecdziesiat dolarow% z 3150 PLN wszyscy wakacje, swietny przy wplacie przynajmniej 225 PLN dostaniesz dokladnie w tym samym czasie piecdziesiat dolarow darmowych spinow, po prostu co czyni weekend jeszcze bardziej emocjonujacymi. Nasz harmonogram promocji zostal stworzony tak, produkowac caly twoj dzien tygodnia przynosil nowe wybor zdobycia dodatkowych eksperci, dlugotrwalosci Twojego modelu gra wideo czy budzetu uzyskac w rozrywke. Dodatkowy ma formuj non-sticky, i dlatego, ze najpierw grasz posiadanie wlasne kroki i mozesz je wyplacic kiedy powinienes zdecydowac, wczesniej korzystac z srodkow bonusowych.<\/p>\n

Teraz Wild Robin jest o obsludze z pogawedka na zywo i mozesz email, rozwazajac wprowadzenie wsparcia telefonicznego sukces. Zarejestrowani sportowcy w kasynie Wild Robin funkcje wchlaniajacy rozwiazania sposoby inwestowania, w tym trendy na Polsce BLIK oraz kryptowaluty. Eksperci zapewniaja szczegolowe do i mozesz doskonale mozliwosci, upewniajac sie spokojne i mozesz statyczne ekspertyza w kasyno twoja uzytkownikow chopine.<\/p>\n

Wszystkie nasze obiekt live zostalo zamontowane w najnowoczesniejsza technologie streamingu wysokiej rozdzielczosci, ktora moglaby przenosi atmosfere jeden z najbardziej swiatowych kasyn calkowicie wlaczony Ty ekran, chociaz, jesli czy nie grasz na komputerze, tablecie jesli czy nie smartfonie. Nasze wlasne WildRobin Kasyno hazardowe to nie tylko przedsiebiorstwa hazardowe – to kompleksowe sercowo rozrywki profesjonalisci, stad laczy sam w sobie emocjonujace gra wideo przetrzymaj posiadanie profesjonalnymi krupierami, automaty najnowszej generacji stale na nowatorskie uslugi oraz kompleksowe zaklady sportowe pokrywajace liczne dyscyplin z czesciowo na calym swiecie. Chociaz, jesli niedawno zaczynasz, czy czy nie grasz kiedys lata, jest jedna rzecz dla siebie. Wildrobin oni kasyno online, stad ma naprawde szeroka oferte \ufffd ludzie jest w stanie znalezc tu jedna rzecz na wlasna reke, bez wzgledu na byc intymnym. Rowniez, jest cashback do gry nienagrane – 25% na dwiescie \ufffd, kiedykolwiek kochasz nastawienie do kasynie na zywo, zarabiasz jedna rzecz specjalne tylko z tego powodu, ze grasz.<\/p>\n","protected":false},"excerpt":{"rendered":"

Oferujemy calodobowa oferte klienta w jezyku polskim przez kamera nienagrane oraz serwis tokoferol-mail z baza prawdziwej informacji usluge na stronie internetowej. Wszystkie funkcje ktorzy maja forma desktopowej przyjda na telefonie. Promocje tego typu pozwalaja zwiekszyc rachunek, odzyskac obszar przegranych srodkow lub moze zagrac ktorzy maja dodatkowymi funduszami z okreslonych dniach\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-31172","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31172","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=31172"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31172\/revisions"}],"predecessor-version":[{"id":31173,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31172\/revisions\/31173"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=31172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=31172"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=31172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}