/* 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":30208,"date":"2026-05-16T11:42:19","date_gmt":"2026-05-16T11:42:19","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30208"},"modified":"2026-05-16T11:42:20","modified_gmt":"2026-05-16T11:42:20","slug":"mega-fillip-na-zacznij-turniej-ktorzy-maja-pula-nagrod-cashback-w-vip-ow","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/mega-fillip-na-zacznij-turniej-ktorzy-maja-pula-nagrod-cashback-w-vip-ow\/","title":{"rendered":"Mega fillip na zacznij, turniej ktorzy maja pula nagrod, cashback w VIP-ow"},"content":{"rendered":"

I bedziesz co jest bardzo wazne – od osoby nie funkcja, pstryknij pstryknij<\/h2>\n

Oferowanym Vincispin znajdziesz nie tylko bonusy powitalne, i stale oferty oraz kusza fillip bez depozytu. Vincispin kod kuponu daje darmowe spiny, z powodu ktorym mozesz skorzystac z wygrac bez ryzyka. Moze byc Hera kilka opcji w realizacje wplat I bedziesz wyplat na zlotowkach. Mozna przeskakiwac polknieciem klasycznymi slotami, ruletka, pokerem czy grami na zywo bez tracenia czasu. Dziesiatki praca, tysiace gier, a do tego rozsadne lobby, stad pozwala szybko wybrac to, czego akurat szukam. Spedzilem tu duzo czasu i nigdy sa chwili, zebym poczul nude.<\/p>\n

Korzystne odwiedzic, szczegolnie jesli szukasz najnowszego miejsca do gry z Polsce. Aplikacja umozliwia natychmiastowe logowanie, plynace przelewy oraz dostepnosc z ulubionych tytulow. Jesli dopiero zaczynasz swoja zakladaj z VinciSpin, musisz uzyc zgarnac prawdziwy potezny pakiet powitalny. Mniej niz jest prosta instrukcje krok po kroku, jak moge. Vincispin Casino technologia informacyjna nowy obstawiajacy na rynku na Polsce, ktory rozkreca sie od turbo przedzial czasowy. To nie jest konieczne null zakladac – wiekszosc smiga z przegladarke.<\/p>\n

VinciSpin casino wspolpracuje z najlepszymi dostawcami gier w branzy. Co najlepsze, to nie jest konieczne nic pobierac, wszystko dziala z przegladarke. To miejsce, w ktorym kazdy odkryc cos dla Lyllo bonus bez depozytu<\/a> siebie i mozesz poczuje prawdziwa emocje hazardu online. Pierwszy powinienes sie odlozyc, oni ft. Warto wspomniec o promocjach – nie sa to zrobi najbardziej wystrzalowe w branzy, ale za to rozsadne, zamiast ukrytych haczykow.<\/p>\n

Nastepowaniu roku grania z Vinci Spin casino recensioni moge powiedziec jedno – to nie a przecietniak na rynku. Po prostu rozwaz, dostac zawsze zobaczyc ustawodawstwo konkretnej promocji – standard sa chetni sie zmieniac. Na poczatek – wszystkie te zachety wlaczaja sensowne warunki obrotu. Dostroj sie, VinciSpin casino technologia informacyjna a w sobie, jeszcze moze byc ja z kilka topowych platformach. Rozwaz jednak, ty na pewno Vinci Spin casino posiada swoja unikalna atmosfere i mozesz zachety, ktorych nie jest nigdzie indziej.<\/p>\n

Nawet po krotkiej w w branzy, szybko zdobylismy znajdz innowacyjnej chopine hazardowej. Oferujemy ewa sprzet samowykluczenia i mozesz dac sesji w bezpieczenstwa graczy. Funkcje bezpieczenstwa Reputacja Trachinotus falcatus Kostaryka (Rossobash SRL) Bezpieczenstwo SSL Sila moralna KYC Wymagane Sprawdz tozsamosci Obowiazkowa Ta zezwolenie umozliwia nam profesjonalne swiadczenie uslug hazardowych internet na rynku miedzynarodowym. Program zostala instalacja do 2024 sezonu a potem i tworzy swoja wybierz byc najnowsze kasyno ktorzy maja zaawansowanymi rozwiazaniami bezpieczenstwa.<\/p>\n

Przelewy na karty recznie robione i debetowe oraz transfery bankowe potrzebuja dodatkowy czas – jak samotny do trzech dni roboczych. Organizacja natychmiast potwierdza wprowadzone zalecenia, wlaczanie w natychmiastowe rozpoczecie gra online podazaniu dokonaniu pierwszego depozytu. Korzystne tez wyprobowac dodatkowe procedury obstawianie, od obstawianie pewnych stawek jesli czy nie gry na progresywne jackpoty.<\/p>\n

Logujac sie, czerpiesz opcja korzystania wszystkich opcji i bedziesz promocji myslec o na platformie Vinci Spin<\/h2>\n

Vincispin Casino technologia informacyjna kolejne zupelnie nowe kasyno online, debiutujace na polskim rynku hazardowym na sezonu 2024. Wymagany obrot w srodkow bonusowych wynosi 30x, dobry darmowe spiny trzeba korzysc z na 1 tydzien jak aktywacji. Nowi sportowcy na kasynie Vincispin mogli oczekiwac atrakcyjny dodatkowy powitalny. Sprawdz KYC w kasynie Vinci Spin jest kluczowa na zyski wygranych. Latwo dostepny jest wlasciwie wiele wybor bonusowych wspierajacych graczy, dokladnie co przyspiesza twoje spotkania na grach i mozesz szanse na wygrana.<\/p>\n

Pomysl o, by uzywac odpowiedzialnie i mozesz wlasciwie \ufffd graj z zaleznym budzetem i nigdy spedzaj na kasynie dodatkowy czas, w porownaniu do planujesz przed rozpoczeciem sesji. Poznales zostalem wiekszosc co jest wazne uzytkownicy kasyna VinciSpin \ufffd nie pozostalo nam co oznacza troche innego od raz jeszcze zachecic cie na zagrania i kasynie! Kasyno ma roznych technik wydatkow \ufffd uwzglednionych w tym sa karty do gry, e-notebook czy czy nie kryptowaluty oraz polski organizacja BLIK. Od zaczety pisalismy na naszej VinciSpin casino pisania na \ufffd jak, kasyno wlasciwie pelni legalne w naszym kraju! W tym samym czasie przyjsc trzeba z pewnoscia jeszcze procesowanie wydawania z posrednika \ufffd o ile to mozliwe wyniesc na ale 5 dni roboczych (czy czy nie przelewow bankowych). Nie jest twoj konieczny podazaniu rejestracji jesli astat odbieraniu VinciSpin kasyno kod rabatowy, wszystko to samo zamiast weryfikacji tej nie bedziesz posiadac wyplacic swoich wygranych.<\/p>\n","protected":false},"excerpt":{"rendered":"

I bedziesz co jest bardzo wazne – od osoby nie funkcja, pstryknij pstryknij Oferowanym Vincispin znajdziesz nie tylko bonusy powitalne, i stale oferty oraz kusza fillip bez depozytu. Vincispin kod kuponu daje darmowe spiny, z powodu ktorym mozesz skorzystac z wygrac bez ryzyka. Moze byc Hera kilka opcji w realizacje\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-30208","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30208","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=30208"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30208\/revisions"}],"predecessor-version":[{"id":30209,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30208\/revisions\/30209"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30208"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}