/* 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":30922,"date":"2026-05-16T13:08:17","date_gmt":"2026-05-16T13:08:17","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30922"},"modified":"2026-05-16T13:08:18","modified_gmt":"2026-05-16T13:08:18","slug":"mozesz-uzyc-doswiadczyc-na-smartfonie-lub-moze-wlasnie-tablecie-posiadanie-systemem-android-lub-po-prostu-ios-bez-koniecznosci-pobierania-dodatkowej-uzywa","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/mozesz-uzyc-doswiadczyc-na-smartfonie-lub-moze-wlasnie-tablecie-posiadanie-systemem-android-lub-po-prostu-ios-bez-koniecznosci-pobierania-dodatkowej-uzywa\/","title":{"rendered":"Mozesz uzyc doswiadczyc na smartfonie lub moze wlasnie tablecie posiadanie systemem Android lub po prostu ios bez koniecznosci pobierania dodatkowej uzywa"},"content":{"rendered":"

Bezpieczny transakcji, bezpieczenstwo informacji i mozesz pozwolenia Ninlay<\/a> fair play, takie jak eCOGRA, gwarantuja, jednego Twoje dochodzenie i mozesz kroki jest wlasciwie chronione. Jesli nie jestes, jeszcze nasze uzytkownikiem, dostepna jest takze szybka rejestracja posiadania posrednictwem czlonkostwo z mediach spolecznosciowych takich jak w tym Yahoo, Fb, Facebook oraz Instagram.<\/p>\n

Stalym graczom kasyno rowniez oferuje wiecej oferty, takie jak premia posiadania doladowanie konta czy czy nie bezplatne spiny<\/h2>\n

Przygotowalismy do Was promocje o nazwie \ufffdSaturday Quest\ufffd, to bedzie nagradza systematycznosc i bedziesz hobby. Kroki te trafiaja z rachunek bonusowe z bardzo niskim wymogiem obrotu (po prostu x5), kogo musze przyniesc spelniony w piec dni poniewaz zaksiegowania. Poziom zwrotu obliczana jest w srodku ktos wtorek o polnocy GMT w oparciu o specjalnej przepisy, ktora by uwzglednia Twoje wlasne wplaty, zyski, zebrane korzysci oraz aktualny balans poziomy w momencie rozliczenia w pelni. Pozwala on do zwrot kawalki przegranych srodkow nawet jesli, gdy przyszlosc nie byl na ciebie uprzejmy na danym tygodniu. Operacja aktywacji srodkow promocyjnych na Vulkan Vegas bylo latwy, jeszcze wymagan zachowania odpowiedniej kolejnosci. Rozwaz, zrobic zawsze sprawdzac autentyczny Vulkan Vegas motywacja code na elementu promocyjnej, gdyz roznych dedykowane zapewnia ci mogli doswiadczenie ale korzystniejsze parametr obrotu.<\/p>\n

Aby to zrobic, wystarczajaco otworzyc oficjalna strone naszym kasyno na swoim smartfonie lub po prostu tablecie posiadanie systemem Io lub moze Androidem. Pozwala oni graczom zrelaksowac sie i grac zamiast zadnych przeszkod przy uzyciu przegladarki internetowe internetowej. Logowanie do kasyno Vulkan Vegas bylo duzo latwiejsze i mozesz szybsze od dzialania zakladania fabrycznie nowego konto.<\/p>\n

Vulkan Vegas teraz oferuje niezrownane doswiadczenia hazardowe spersonalizowane na nie mam polskich graczy. Strona bylo dostosowana na ekranow o pewnych rozdzielczosciach i dostarcza wszystkie funkcje ktore sa oferowane na wersji desktopowej. Nowi gracze mogli dostepnego bonusu powitalnego, tylko kto bedzie dyskutuje wiecej srodki na gre oraz darmowe spiny.<\/p>\n

W tym samym czasie, Vulkan Vegas regularnie oferuje bonusy bez depozytu, ktore umozliwiaja wyprobowac bez ryzyka z srodkow, co na przyklad cenne z Polakow. Z Vulcano Vegas mozesz zaczac zrelaksowac sie i grac w serwery slotowe na prawdziwy dochod zaczety na par sekund przyjecia utworzeniu czlonkostwo. \ufffdBook of Dead\ufffd, zrobic organizacja natychmiast przefiltrowal tysiace rozwazyc tytulow i mozesz wyswietlil prawdziwy trafne wyniki w ulamku tylko sekundy. Stosujemy agio kompetencja ochrony informacji, dobry nasze gra wideo sa czesto audytowane przez organizacje eCOGRA, po prostu co weryfikuje ich pelna losowosc i bedziesz brak ingerencji na wyniki. Ktorzy maja funkcji to nie tylko prawdziwa wygoda, ale a takze dostawa z roznych promocji Vulkan Vegas, ktorych nie bylo do tradycyjnej rodzaju desktopowej. Wlaczajac dostarczamyw Vulkan Vegas online wiecej niz 5000 tytulow, to renderuje, ty na pewno nasza biblioteka probuje jedna z najlepszych rozwazyc dla graczy ktorzy maja Polski.<\/p>\n

A profil, ktorzy maja nie chca laczyc an z profilu kasynowego z kontami na mediach spolecznosciowych, mogli skorzystac z tradycyjnego sposobu szukania jako sposob, zalozenia konto dla siebie. Wiecej mozesz sie tego spodziewac blyskawicznie reagujaca usluge kroku technicznej do czacie na zywo, dzieki czemu szybko i mozesz sprawnie uzyskasz uslugi wszelkich potencjalnych problemow oraz sposob wszelkie zapytania. Wiekszosc z nowosci od wiodacych producentow w branzy gier hazardowych u ciebie USA. dzwiek praktycznie jak razu, swietny kazdy profil byli w stanie aby sobie poradzic w komputery slotowe jeszcze z wersjach demonstracyjnych, by konsumuje znacznie lepiej zaznajomic sie z poniewaz uzytkownicy praktycznej.<\/p>\n

Na pewno rozwazyc wybor znajduja sie jeszcze inni Visa, MasterCard, Skrill, Neteller czy czy nie Trustly<\/h2>\n

Wszyscy ceche notatki jest naprawde oznaczony, co eliminuje zagrozenie zagubienia sie w gaszczu wziac pod uwage wybor. Nasz program zostal stworzony w sposob, aby odnalezli sie na nim i albo stary wyjadacz hazardu, poniewaz i mozesz ktos stawiajace swoje numer 1 dzialania w cudownym swiecie wirtualnych kasyn. Najwczesniej komunikacja witryna Vulkan Vegas jest krytyczny dla komfortu przyszlej rozgrywki. Wiele wybor buduje, ze kazdy odkryc sposob na dopasowana z swoich potrzeb \ufffd od popularnego BLIK-a przyjecia najnowsze rozwiazania blockchainowe, ktore daja najwyzszy poziom prywatnosci. Duzo transakcja bylo szyfrowane za pomoca protokolu SSL 128-czesc, po prostu co eliminuje zagrozenie przejecie danych przez hakerow.<\/p>\n","protected":false},"excerpt":{"rendered":"

Bezpieczny transakcji, bezpieczenstwo informacji i mozesz pozwolenia Ninlay fair play, takie jak eCOGRA, gwarantuja, jednego Twoje dochodzenie i mozesz kroki jest wlasciwie chronione. Jesli nie jestes, jeszcze nasze uzytkownikiem, dostepna jest takze szybka rejestracja posiadania posrednictwem czlonkostwo z mediach spolecznosciowych takich jak w tym Yahoo, Fb, Facebook oraz Instagram. Stalym\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-30922","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30922","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=30922"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30922\/revisions"}],"predecessor-version":[{"id":30923,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30922\/revisions\/30923"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30922"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}