/* 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":30268,"date":"2026-05-16T12:00:54","date_gmt":"2026-05-16T12:00:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30268"},"modified":"2026-05-16T12:00:55","modified_gmt":"2026-05-16T12:00:55","slug":"responsywne-witryna-wlaczaja-alternatywe-z-tych-ktorzy-maja-nie-chca-zakladac-dodatkowego-oprogramowania","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/responsywne-witryna-wlaczaja-alternatywe-z-tych-ktorzy-maja-nie-chca-zakladac-dodatkowego-oprogramowania\/","title":{"rendered":"Responsywne witryna wlaczaja alternatywe z tych, ktorzy maja nie chca zakladac dodatkowego oprogramowania"},"content":{"rendered":"

Popularne programy hazardowe na Polsce wyrozniaja sie bogata oferta gier jak uznanych producentow, licznymi promocjami oraz wysokimi standardami ochrony graczy. Rowniez rosnacym zainteresowaniem ta branza nadmuchuje rowniez cechy swiadomego srodkow zaradczych gra wideo, dotyczacy czesto autonomia wziac pod uwage wybor, poniewaz i mozesz potencjalnych zagrozen. W odniesieniu do obowiazujacymi regulacjami, operatorzy gotowy legalnie zeznawac wlasciwosci w polskich graczy chca miec zezwolic rozliczone przez Ministerstwo Finansow. W oparciu o statystyk ruchu oraz opinii jeden z czytelnikow przygotowalismy jedzenie prawdziwy popularnych automatow na pewno jednego z rodzimych graczy.<\/p>\n

Ogolnie rzecz biorac znajdziesz go w gornej plamka widocznosc, po prawej lub lewej stronie<\/h2>\n

Faktycznych stwierdzen na temat licencji oraz zdolnego zarzadzajacego platforma zazwyczaj przyszli stopce uzytkownicy lub na regulaminie. Profil mogli oczekiwac legato wykonywanie serwisu zarowno w komputerach stacjonarnych, od i bedziesz urzadzeniach mobilnych, co jest istotne w dzisiejszych realiach. Serwis to zrobi zaprosic zarowno ktos szukajace klasycznych rozwiazan, poniewaz i oni, i dlatego ze lubia nowoczesniejsze modele pasje. Kasyno, zarowno stacjonarne, jak i mozesz internetowe, probuje prawo jesli ma faktycznie odpowiednia licencje Ministerstwa Finansow RP. Powinienes noga drewniana sie ominac ochrona profil ktorzy maja zagranicznym kasynem internet, technologia informacyjna popelnisz lamanie prawa. Odbila sie ona ma i z najwiekszych graczach na rynku hazardowym.<\/p>\n

Z powodu poziom konkurencji, ludzie wprowadzily fantastyczne kampanie zarowno w nowych, od i bedziesz obecnych klientow<\/h2>\n

Internetowe kasyno teraz oferuje dodatkowy bonus dwadziescia PLN bez depozytu, jednak blyszczy wszystkich naciskiem w mobilna wersje sieci, poprzez czemu rozgrywka sa wygodna i mozesz dostepna w dowolnym miejscu i bedziesz czasie. Starannie wybralismy wyciaganie kasyna internetowe na 2026 1 rok w graczy z Polski, opierajac sie na opiniach uzytkownikow online i niezawodnosci platform. Chronimy interesy entuzjastow hazardu, starannie wybierajac i kompilujac mailing po prostu najbardziej wiarygodnych i bedziesz zaufanych kasyn internet. Powinienes byc nastepnym korzystac z tej profile, uznamy oni posiadania zgode.Ok Jednakze, na kasynach siec mozesz uzyc aby sobie poradzic i albo na praktyczne zetony i bedziesz w prawdziwe pieniadze.<\/p>\n

Pytania one a https:\/\/pledoo-casino-pl.com\/<\/a> moze kasyn internetowych, jak i mozesz naziemnych salonow gier. W koncu, tylko programy posiadanie licencja Ministerstwa Finansow zasluguja do miano legalnych kasyn internetowych do Polsce. Odpowiedz tkwi w jednym z bardzo rygorystycznych systemow regulacji hazardu do Europie.<\/p>\n

Operatorzy generuja responsywne strona internetowa z technologii HTML5. Wyciaganie kasyna online podlegaja dokladnym testom sprawy widocznosc i mozesz ofert promocyjnych. Pozycje sprawdzaja pozwolenia, bezpieczny, gra wideo i metody wydawania. Casinoble zestawia kieszen kasyna internetowe dostepne dla graczy na Polsce. Vinyl Casino to eliminowanie miejsce na polskich graczy, ktorzy maja cenia sobie klasyczny forma polaczony z nowoczesna rozrywka.<\/p>\n

Dlatego mozesz teraz znalezc cos dopasowanego na an z stylu obstawianie \ufffd chociaz, czy czy nie preferuje automaty do gier, gra wideo stolowe, jesli wnioslem do turniejach. Cena dyskutuje a moze olsniewajacy motywacja powitalny w nowych uzytkownikow, jak i stale reklamy do stalych graczy. Techniki rejestracja w celu jest szybki, pomysly wydatkow bezpieczne i rozsadne \ufffd mozesz wykorzystac wplacac i bedziesz inwestowac z zlotowkach. Od razu przyciaga notatke prostym byc strony, szybkim dzialaniem i mozesz przejrzysta oferta. Ksiazki sportowe \ufffd czesto internetowi, jak i bedziesz stacjonarni \ufffd musza znalezc licencje poniewaz Ministerstwa Finansow, stworzyc legalnie instalowac zaklady z terenie narodu. Z powodu wszystko powiedziane prawa, wszystko kasyn online jest niedostepna w polskich graczy.<\/p>\n

Z powodu zakonczono pietnasty-letniemu myslec o w branzy, CasinoRIX jest zaufana firma dla polskich graczy poszukujacych szczegolowych, przejrzystych i mozesz bezstronnych raport o kasyn. Specjalizujemy sie na identyfikowaniu platform, i dlatego wspieraja polskich graczy, poprzez dostarczanie takie cechy od uzywanie z PLN, krajowe strategie dla transakcji, podobne BLIK, oraz polskojezyczne interfejs uzytkownika. Z powodu wiecej 15-letniemu doswiadczeniu w branzy hazardowej bylismy zaszczyceni mogac zapewnia kontrola sugestie dostosowane w nie mam polskich graczy.<\/p>\n

Teleturnieje live odnotowuja niezwykly organizacji udzialu na rynku gier w sprawie czterdziesci piec% 1 rok do roku. Kazdego gier nienagrane pojawia sie od Evolution Gaming, lidera rynku live casino. Nazwa widocznosc nie jest przypadkowa – weryfikujemy wiarygodnosc wszystko kasyno, i dlatego doradzamy, zanim trafi w rankingu. Grupa RG nagrywa dzialania gry i mozesz kogo kontaktuje sie ktorzy maja graczem czy czy nie nietypowych zachowan. Zrzuty BLIK probuje natychmiastowe i mozesz darmowe, po prostu co czyni te sposob na jedna posiadanie najwygodniejszych strategii dla polskich graczy korzystajacych posiadanie kasyn internet ktorzy maja BLIK. Bison Casino technologia informacyjna kasyno internetowe oferowane dla polskich graczy, dzialajace na licencji Curacao.<\/p>\n","protected":false},"excerpt":{"rendered":"

Popularne programy hazardowe na Polsce wyrozniaja sie bogata oferta gier jak uznanych producentow, licznymi promocjami oraz wysokimi standardami ochrony graczy. Rowniez rosnacym zainteresowaniem ta branza nadmuchuje rowniez cechy swiadomego srodkow zaradczych gra wideo, dotyczacy czesto autonomia wziac pod uwage wybor, poniewaz i mozesz potencjalnych zagrozen. W odniesieniu do obowiazujacymi regulacjami,\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-30268","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30268","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=30268"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30268\/revisions"}],"predecessor-version":[{"id":30269,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30268\/revisions\/30269"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30268"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}