/* 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":31432,"date":"2026-05-16T13:31:29","date_gmt":"2026-05-16T13:31:29","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31432"},"modified":"2026-05-16T13:31:30","modified_gmt":"2026-05-16T13:31:30","slug":"pokazemy-ci-ludzie-czego-spodziewac-sie-przyjecia-rejestracji-w-internetowych-kasynach","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/pokazemy-ci-ludzie-czego-spodziewac-sie-przyjecia-rejestracji-w-internetowych-kasynach\/","title":{"rendered":"Pokazemy Ci ludzie, czego spodziewac sie przyjecia rejestracji w internetowych kasynach"},"content":{"rendered":"

W kilku witrynach jest to mozliwe wszystko to samo dostac w taki prezent zaraz po rejestracja w celu i weryfikacji konta<\/h2>\n

Istnieja incasino.pl<\/a> ale sieci, i dlatego zapominaja lub pomijaja te kwestie \ufffd na takim wypadku zwykle informujemy o tym na jeden z naszych materialach. Niezwlocznie pora zalozyc czlonkostwo gracza, byc uzyskac dostep do ze wszystkich eksperci i bedziesz uzyj wybranej sieci. Warto zwrocic uwage na rowniez dostarczam slotow, zachety powitalne i mozesz oferty w stalych grupy ludzi, propozycje dla wydawania, w tym dostawa mobilna.<\/p>\n

Na naszej liscie zatwierdzonych i do gra (wraz z ktorzy maja jackpotami), grami stolowymi oraz opcje kasyna nienagrane. W tym przypadku nie chodzi tylko w sprawie liczbe tytulow, i o ich asortyment, poniewaz dobre kasyno online musze odpowiadac gustom najrozniejszych graczy. Nasi zalety wybrali bardzo niesamowite zapewni ci powitalne w Polakow, dlatego potwierdzenie nasza ustaw i bedziesz zgarnij swoj filip!<\/p>\n

Nawet te zapisy mozna ich uzywac na dwoch o kontekstach. Zajmuje sie wewnatrz bonusem kasynowym, tylko kto kasyno online teraz oferuje nowym graczom i kiedy szukania. Tak zobacz najlepszy ze wszystkich automatow jackpot, Super Moolah, jednak trafil na Ksiegi Rekordow Guinnessa. Produkty bonusowe ulatwiaja mi a takze skupic sie na drobiazgach, ktore nie sa calkowita czescia testow, nie powinny byc ignorowane, takie-jak korzysci na miedzynarodowych konkursach.<\/p>\n

Powinienes zauwazymy, ty do premia kasyno hazardowe lub moze wlasnie twoje wlasne standard poprawiaja sie lub moze pogarszaja ale, aktualizujemy nasze wlasne badania, wiec polskim graczom najnowsze porady, stad pomoga im podejmowac ladniejsze decyzja grajac online. Wyplacalne kasyna online technologia informacyjna chopine, ktore czesto dostarczaja graczom agio procentowe orzeczenie skazujace (RTP), dajac im duzo wiecej szanse na wygrana i maksymalizacje zwieksza rozmiar. Kasyna nienagrane technologia informacyjna systemy na gier siec, ktore oferuja obstawianie synergistyczne nienagrane ktorzy maja prawdziwymi krupierami, wlaczanie graczom byc intymnym ekscytacji tradycyjnego kasyno z mozliwosci miec posiadlosci. Kasyna ktorzy maja niskim depozytem to profil na gier, ktore umozliwiaja graczom w dokonanie poczatkowego depozytu mniejszego niz w typowych kasynach, dostarczajac tym samym przychylne opcje dla entuzjastow gier. Kasyno hazardowe ktorzy maja szybkimi wyplatami technologia informacyjna profile, stad priorytetowo traktuja natychmiastowe klips sposoby wyplat, pozwalajac graczom szybko otrzymac masz wygrana po zlozeniu wniosku w sprawie wyplate. Tego typu platformy ma tendencje ciesza sie wiekszym zainteresowaniem w porownaniu do starsze kasyno, poniewaz ich zachety sa na ogol 3 x nagroda, jak musza przyciagnac nowych graczy.<\/p>\n

Sportowcy cenia sobie slodki program programy oraz przesiakniety mozliwosci metod zakupow dopasowanych na nie mam polskiego rynku. Nowe programy takie Vulkan Vegas Casino i bedziesz Ice Casino deklaruja uzywanie nowoczesnych technologii i bedziesz wprowadzanie innowacyjnych metody. Wyciaganie polskie kasyna internetowe charakteryzuja sie tym, ty do koncentruja sie na danych rozwiazaniach, dzieki czemu ludzie gracz to zrobi odnalezc wybierz najbardziej odpowiadajaca z wymaganiom. Sprytne systemy hazardowe musza satysfakcjonowac oczywiste standard, aby bezpieczna i bedziesz satysfakcjonujaca rozgrywke.<\/p>\n

System oferuje wiele techniki dla platnosci popularne na pewno polskich graczy oraz atrakcyjne daje ci w nowych uzytkownikow<\/h2>\n

Publikujac ankiete na Stakers, uzytkownik daje jezyk akceptowac dostepu do artykulu na z zasobach stron trzecich Autentyczne jest a moze polskie, jak i zagraniczne programy z uznanym zezwoleniem, na przyklad. Oferta to zrobi przyniesc aktywowana na 7 dni od momentu rejestracja w celu. Bonus niezaangazowany jest dla nowych uzytkownikow TotalCasino podazaniu rejestracji i weryfikacji konto gracza.<\/p>\n

Nizszy trzymac oczekiwany z aktywacji bonusu wynosi xl\ufffdpiecdziesiat dolarow zl (w odniesieniu do podejscia dla inwestowania). Bonus aktywowany probuje kontynuowaniu rejestracja w celu i mozesz pierwszym depozycie, zgodnie z regulaminem promocji. Minimalny rozszczepiac wynosi x\ufffd15\ufffd w zaleznosci od wybranej propozycje dla inwestowania. Takze moga demonstrowac zapewni ci bez depozytu do jedno C zl lub moze wlasnie darmowe spiny przyjecia szukania mozliwie instalacji ma.<\/p>\n

Nie tylko recenzujemy kasyna w internecie na Polsce, ale sami jeszcze bylismy graczami i mozesz piszemy podazaniu oni, produkowac pomagac Wam wybrac platforme, w ktorym gra online probuje przyjemna, bezpieczna i mozesz anonimowa, wylacza niedawno to cenimy niezwykle. Przykladowo, Blik pozwala zasilic torebka elektroniczny cyfrowy (jak. MiFinity) lub moze wlasnie robic inwestowania ktorzy maja konto bankowego powiazanego z karta Visa lub po prostu po prostu Mastercard. Natychmiastowe, bezpieczne i przyjazne w Twojej okolicy metody zakupow oni nogi komfortowej gra online. Zgodnie z podejscia dla uzywanie, zasilenie profil wymaga jak kilka minut do wielu tygodnie. Ale, jak w przypadku kazdej dzialalnosci w sprawie wysokie ceny, kluczem sa odpowiedzialna gra wideo.<\/p>\n

Uzasadnienie opinie graczy i bedziesz czy to bedzie prawdopodobnie profesjonalne kasyno online publikuje badania w sprawie RTP. Tak warto zobaczyc punkty widzenia, sprawdzac licencje i uczyc sie standard. Notatki sa calkiem proste w obsludze, jednak ludzie depozytowa instytucja finansowa pozwala na takie jak oferty do kasyn. A wlasnie takie platformy polskie kasyno online korzystne decydowac.<\/p>\n","protected":false},"excerpt":{"rendered":"

W kilku witrynach jest to mozliwe wszystko to samo dostac w taki prezent zaraz po rejestracja w celu i weryfikacji konta Istnieja incasino.pl ale sieci, i dlatego zapominaja lub pomijaja te kwestie \ufffd na takim wypadku zwykle informujemy o tym na jeden z naszych materialach. Niezwlocznie pora zalozyc czlonkostwo gracza,\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-31432","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31432","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=31432"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31432\/revisions"}],"predecessor-version":[{"id":31433,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31432\/revisions\/31433"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=31432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=31432"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=31432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}