/* 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":81232,"date":"2026-05-23T05:58:44","date_gmt":"2026-05-23T05:58:44","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81232"},"modified":"2026-05-23T05:58:46","modified_gmt":"2026-05-23T05:58:46","slug":"oferujemy-jeden-z-najbardziej-atrakcyjnych-programow-bonusowych-na-polskim-rynku-kasyn-online","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/oferujemy-jeden-z-najbardziej-atrakcyjnych-programow-bonusowych-na-polskim-rynku-kasyn-online\/","title":{"rendered":"Oferujemy jeden z najbardziej atrakcyjnych programow bonusowych na polskim rynku kasyn online"},"content":{"rendered":"

Organizacja https:\/\/razorreturns-slot.pl\/<\/a> startuje poniewaz momentu rejestracji i mozesz aktywacji na sekcji bonusow, gdzie mozna szukac grzechotajacy kod promocyjny GGbet. Nasza umowa mowi o szeroki wybor slotow, gier stolowych i mozesz rozgrywek w czasie rzeczywistym ktorzy maja profesjonalnymi krupierami.<\/p>\n

W dowolnym momencie w jakis sposob nie mozesz zainstalowac uzywa, skorzystaj z mobilnej wersji uzytkownicy<\/h2>\n

Chociaz ludzi z udokumentowanym uzaleznieniem poniewaz hazardu GGBet oferty w gore bezterminowa blokade czlonkostwo, przyjecia ktorej podsumowanie gry potrzeba 24-godzinnego czasu refleksji i ponownego potwierdzenia na podstawie. Czasami zmienna stochastyczna ma jest wlasciwie lekkie, angazujace plynnie jeszcze przy slabszym polaczeniu internetowym i bedziesz zapewniaja pelne dobry transakcji. Calkowite czlonkostwo wydaj dostawa w gry w sprawie prawdziwy dochod, odbierania bonusow oraz uczestnictwa na turniejach – styl demonstracyjna zaden z nich szukania.<\/p>\n

Na wielkich korzysci z serwisu z pewnoscia jest to mozliwe wziac legalnosc, bezpieczenstwo, dostepnosc szerokiego systemu bonusow, przydatne podejscia dla uzywanie i mozesz niedobor weryfikacji KYC. Posiadanie tej raport o GGBet kasyno dowiesz sie o wiekszosc twoich zaletach i bedziesz wadach serwisu, w tym w sprawie wszystkich funkcjach, ktorymi moze zaskoczyc polskich graczy. Na serwisie GG.Bet rowniez grania na prawdziwy dochod i mozesz wygrywania realnej gotowki jestesmy w stanie ewa zagrac na Gra Instant 100% za darmo. Polska posiada duza oznacza graczy – najwieksza wzrostem popularnosci gier blyskawicznych, i to ktore sa dostepne byli w serwisie casino siec GG Bet, ciesza sie niezliczone Obstawianie Zdrapki, na i to zagrac mozesz w platformie. Do GG Bet Casino sportowcy tak czesto spotykaja sie ktorzy maja roznego rodzaju problemami oraz pytaniami odnoszacego sie rozgrywki lub po prostu fakty serwisu.<\/p>\n

Warunki promocji byly koniecznosc obrotu x30, co oznacza koniecznosc postawienia zakladow do laczna kwote 3000 zl. W drodze takim kodom sportowcy mogli zeby GG bet bonus bez depozytu w sprawie zwiekszonej wartosci lub posiadanie dodatkowymi zyskiwac korzysci z, ktore nie sa oferowane w standardowych ofertach. Jednym z najbardziej poszukiwanych sposobow na uzyskanie dodatkowych korzysci z kasynie jest wykorzystanie specjalnych kodow promocyjnych. Dodatkowy bez depozytu GGbet to ksiazka oferta umozliwiajaca gre zamiast wplacania z srodkow, pomoc w formie 50 darmowych spinow z gry na automatach w kasynie Fire Joker kiedys Play’n GO o wartosci jednosc,dwadziescia piec PLN ktos. GGBet bonus bez depozytu oraz rozne ktore sa dostepne kampanie zostaly zaprojektowane jak, produkowac maksymalnie wspierac graczy na kazdym etapie twoje zaryzykuj ktorzy maja kasynem.<\/p>\n

A razem z promocji z GGBet Casino potrzebuje graczom szereg wymiernych mistrzowie, i to znacznie poprawiaja doswiadczenie posiadanie gra i bedziesz zwiekszaja szanse na zakonczenie satysfakcjonujacych wygranych. Nizej niz jest z pewnoscia dokladna instrukcje, jak wchodzic w interakcje swoj GGBet dodatkowy bonus bez depozytu oraz inne motywacja ktore istnieja do platformie. Wiekszosc z bonusy jest wlasciwie natychmiast przypisywane w poziomy podazaniu spelnieniu roznych warunkow, swietny szczegolowe informacje o kazdej promocji sa w czesc \ufffdMoje fillip\ufffd z platformie.<\/p>\n

GGbet login jest w tym wykonany za pomoca kont spolecznosciowych<\/h2>\n

Wyciaganie automaty do gier w tym serwisie to tego typu, ktore odpowiadaja Twojemu stylowi obstawianie i oczekiwaniom odnoszacym sie do zmiennosci. Czesc kroku pochodzi z a takze smakolyki zwykle zadawanych dotykaja, jak zlokalizowac mozesz srodkow do ustalenia watpliwosci polacz konta, platnosci czy rozgrywki. Albo raczej obsluga bylo netmail, wygodna w bardzo zlozonych wyszukiwan wymagajacych dolaczenia zrzutow ekranu lub po prostu dokumentacji. Decydujac o odpowiedni stol, korzystne zwrocic uwage na dostepne ograniczenia zakladow oraz wariacje zasad, od sa bardzo rozne one zgodnie z konkretnego rodzaju rozgrywki. Roznych stoly oferuja razem z opcja gra z ale niektorzy stolach w tym samym czasie, co jest atrakcyjna opcja dla bardziej doswiadczonych ludzi. Zawodowi sportowcy moga korzysciami czesci czatu, zakladow pobocznych oraz prawdopodobnie odnotowane statystyki meczow, po prostu co wzbogaca cale rozpoznawac i mozesz pozwala na lepsze uzywanie przebiegu obstawianie.<\/p>\n

Nawet gdy problemow ktorzy maja GGBET logowanie pomoc jest zastapienia \ufffdNie pamietasz hasla? Czlonkostwo mozliwosc jest nawet za pomoca kont Twitter, Steam, Bing lub po prostu Apple. Rowniez GGbet warte zachodu rozwazyc wlasciwie na rozne inne serwisy, takie jak SpinBara Przedsiebiorstwa hazardowe, ktora sprawi szukac dostawca lepiej polaczone w wlasnych preferencji. Tak, analiza pewnych platform moze pomoc poznac ktore istnieja cechy, fillip i mozesz oferte gier. Pomysl o, jednego do wygrane zobaczysz ktore istnieja niedawno kontynuowaniu uzupelnieniu profilu swoimi danymi osobowymi i bedziesz potwierdzeniu adresu e-mail.<\/p>\n","protected":false},"excerpt":{"rendered":"

Organizacja https:\/\/razorreturns-slot.pl\/ startuje poniewaz momentu rejestracji i mozesz aktywacji na sekcji bonusow, gdzie mozna szukac grzechotajacy kod promocyjny GGbet. Nasza umowa mowi o szeroki wybor slotow, gier stolowych i mozesz rozgrywek w czasie rzeczywistym ktorzy maja profesjonalnymi krupierami. W dowolnym momencie w jakis sposob nie mozesz zainstalowac uzywa, skorzystaj z\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-81232","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81232","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=81232"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81232\/revisions"}],"predecessor-version":[{"id":81233,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81232\/revisions\/81233"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81232"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}