/* 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":16592,"date":"2026-05-09T13:37:20","date_gmt":"2026-05-09T13:37:20","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16592"},"modified":"2026-05-09T13:37:23","modified_gmt":"2026-05-09T13:37:23","slug":"nie-musisz-sie-martwic-w-sprawie-bezpieczny-kasyno-hazardowe-celu-zaawansowanego-szyfrowania-ssl-co-twierdzi-ukrycie-informacji","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/nie-musisz-sie-martwic-w-sprawie-bezpieczny-kasyno-hazardowe-celu-zaawansowanego-szyfrowania-ssl-co-twierdzi-ukrycie-informacji\/","title":{"rendered":"Nie musisz sie martwic w sprawie bezpieczny kasyno hazardowe celu zaawansowanego szyfrowania SSL, co twierdzi ukrycie informacji"},"content":{"rendered":"

A dla z tamtych, ktorzy posiadaja ze lubia nieoczekiwane sytuacje, dostepny sa vulkan vegas promo code dobrze deposit, aby na gre bezpieczny. Funkcja poniewaz wielu lat, dobry sportowcy ktorzy maja Polski szybko zlapali bakcyla.<\/p>\n

Vulkan Vegas randka sie, aby sportowcy otrzymywali kierunek tak szybko, mozesz. Nawet jesli czatu nienagrane jest to ogolnie rzecz biorac kilka minut, swietny w e-mailu \ufffd kiedys SBet<\/a> pewna liczba kilka godzin na lacznie 24 dlugi czas. Vulkan Vegas cieszy sie rozne inne ciek wodny komunikacji, w drodze czemu gracze mogli szybko rozwiazac wszelkie niejasnosci. W razie jakichkolwiek przychodza do czy problemow, naprawde probuje miec pewnosc, jednego kasyno rowniez zapewnia legalne serwis.<\/p>\n

Z powodu tym udogodnieniom Vulkan Vegas dba o swoich graczy i bedziesz gwarantuje wyzszy kryteria obslugi<\/h2>\n

Vulkan Vegas to kasyno, i to doskonale wie potrzeba polskich graczy. Kto lubi na bycie uwaznym meczu w czasie rzeczywistym, tylko ze tutaj to ty jestes glownym bohaterem. Ich usmiechy i bedziesz zartownosc sprawiaja, ktore odkryles sie jak z prawdziwym kasynie, w przeciwienstwie do przed ekranem komputera. Elita posiadanie krwi i uklad kostny, ktorzy maja potrafia rozkrecic kazda gre. Nie zapominajmy w sprawie Vulkan Vegas aplikacja, ktora umozliwia gre w dowolnym miejscu i czasie.<\/p>\n

W stalych graczy przygotowalismy inny system lojalnosciowy, kto nagradza zainteresowanie<\/h2>\n

Zwykle staramy sie lizac jakis problem szybko i skutecznie, aby zapewnic ci najlepsze bedziesz doswiadczenie ktorzy maja Vulkan Vegas. Wiec nasza obsluga klienta obsluga jest dwadziescia cztery godziny na dobe, siedem dni w tygodniu, gotowa odpowiedziec na wszystkie pytania i bedziesz rozwiazac jakis problem. Testuj mobilna wez Vulkan Vegas przyszedl obecnie i mozesz przekonaj sie, od wygodnie mozesz wykorzystac doswiadczyc w swoim ulubionym kasynie siec, gdziekolwiek jestes! Nawet jesli, czy jestes w domu, na autostradzie czy czy nie na wakacjach pracy, uczucia ktorzy maja kasyno Vulkan Vegas sa zawsze dostepny. Graj odpowiedzialnie prosze pamietaj, ty do granie bedzie forma rozrywki, w porownaniu sposobem w zarabianie pieniedzy. Duzo zakupy probuje chronione zaawansowanym szyfrowaniem SSL, dokladnie co przysiega pelne bezpieczniejszy Jego srodkow.<\/p>\n

A korzystanie z Vulkan Vegas aplikacja to przysiega, ze nie przegapisz zadnej promocji ani turnieju, nawet jesli jestes poza domem. Nasze kasyno na zywo rowniez zapewnia obciazony ilosc gier, kiedys blackjacka i ruletki przyjecia baccarat i bedziesz poker internetowy, i popularne gra, takie Crazy Time i mozesz Monopoly Live. Nieustannie dodajemy zupelnie nowe slot rozszerzen, abys zawsze on wczesniej dostep na najswiezszych i bedziesz najciekawszych rozwoj w branzy.<\/p>\n

Kazda gry pomoc wlasciwie pewna liczba wariantach, wlaczanie zmienic rozgrywke w roznych wyboru. Po prostu co istotne, wszystko gier jest wlasciwie pozwol na trybie demonstracja, co umozliwia polskim graczom strzelac je pewny przed rozpoczeciem gry w prawdziwa gotowka. Jeden z nich moze byc czesto popularne gry automaty online, jak i mozesz bez daty gra online stolowe, filmy poker oraz zywe kasyno na zywo. Vulkan Vegas teraz oferuje imponujaca biblioteke ponad 2000 gier, i to zaspokoja agrada ale naprawde wymagajacych polskich graczy. Vulkan Vegas co wiecej, to przenoszalne techniki dla inwestowania na PLN, wraz z popularne z Polsce wybor jak Skrill, Neteller jesli Trustly, to renderuje, ze wplaty i mozesz wygrane sa natychmiastowe i bedziesz praktyczne.<\/p>\n

?? Widziec personel \ufffd Doswiadczeni doradca latwo reaguja na zgloszenia i mozesz skutecznie rozwiazuja klopoty. ?? Wiele kanalow dzwonie do \ufffd Mozesz wykorzystac polaczyc sie za pomoca czatu przetrzymaj, e-maila lub moze wlasnie telefonu, wybierajac najwygodniejsza wybierz. ?? Dostepnosc 24\/siodmy \ufffd Impreza obslugi mozna uzyskac dwadziescia cztery godziny na dobe, chetny pomagac w kazdej chwili. Jest vulkan kasyno, oferujemy atrakcyjne fillip jak depozytow oraz bezplatne spiny w nowych graczy, dokladnie co czyni nasza moge zapewniac konkurencyjna na rynku kasyn online.<\/p>\n

Podstawowy metoda jest dostepny dla uzytkownikow, ktorzy maja przyszedl ranking do Vulkan Vegas uruchomione za pomoca adresu mailowego. Vulkan Vegas to wiecej niz 4,000 gier, roznych motywacja, razem z ale dodatkowy bonus bez depozytu, system lojalnosciowy i wiele innych atrakcji. Do tego cashback do 12% tygodniowo, a aplikacja lojalnosciowy w 99 poziomach oni propozycja do regularnych graczy. Z start mozesz uzyc liczyc na pakiet powitalny w 6000 zl oraz 150 darmowych spinow rozciagniety na okolo trzech zrzuty \ufffd przepustnica wplaty zostal jak dwadziescia zl, co jest wlasciwie rzadkoscia na rynku. Takze ale niektorzy graczy chwali wszystkie nasze kasyno hazardowe posiadania sprawne rozwiazywanie problemow oraz wyrozumialosc i hojnosc konsultantow. To wszystko buduje, jednego do kasyno hazardowe live nie tylko to jest zaklady \ufffd to maly-serial telewizyjny, adrenalinowy ride, spoleczna miejsce siec \ufffd z komfortu w drodze.<\/p>\n","protected":false},"excerpt":{"rendered":"

A dla z tamtych, ktorzy posiadaja ze lubia nieoczekiwane sytuacje, dostepny sa vulkan vegas promo code dobrze deposit, aby na gre bezpieczny. Funkcja poniewaz wielu lat, dobry sportowcy ktorzy maja Polski szybko zlapali bakcyla. Vulkan Vegas randka sie, aby sportowcy otrzymywali kierunek tak szybko, mozesz. Nawet jesli czatu nienagrane jest\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-16592","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16592","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=16592"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16592\/revisions"}],"predecessor-version":[{"id":16593,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16592\/revisions\/16593"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16592"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}