/* 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":81218,"date":"2026-05-23T05:57:42","date_gmt":"2026-05-23T05:57:42","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81218"},"modified":"2026-05-23T05:57:44","modified_gmt":"2026-05-23T05:57:44","slug":"uklad-lojalnosciowy-i-mozesz-vip-na-nvcasino-%ef%bf%bd-warto-przyniesc-na-dluzej","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/uklad-lojalnosciowy-i-mozesz-vip-na-nvcasino-%ef%bf%bd-warto-przyniesc-na-dluzej\/","title":{"rendered":"Uklad lojalnosciowy i mozesz VIP na NVcasino \ufffd warto przyniesc na dluzej"},"content":{"rendered":"

Stale reklamy i regularne okolicznosci z NVcasino<\/h2>\n

NVcasino power of thor megaways<\/a> to nie tylko filip z start – tu rzeczy sie dzieje caly czas. Na ludzie poniedzialek potrzebuje reload bonus na nowa wplate, a w piatki rozdaja bezplatne spiny. Sroda? Cashback do straty ktorzy maja poprzednich tydzien kalendarzowy. To wszystko idzie mechanicznie, raczej niz zadnych zgloszen jesli kodow – wystarczajaco sie zalogowac, wplacic i mozesz odebrac swoja prezentuje.<\/p>\n

Dla fanow rywalizacji sa tez stale zawody na slotach. Grasz, zdobywasz dzialania i mozesz zalogowac sie do podium. Czesto na wygrania sa pojemne pule: gotowka, free spiny, czasem jednak korzysci rzeczowe. Konto aktualizuje sie na zywo, bardzo wszystko jest widoczne jak na dloni.<\/p>\n

Na okres swiateczny robi sie ale ciekawiej – Noc halloweenowa, Sezon bozonarodzeniowy, jesli czy nie wakacyjne moda \ufffd wiekszosc okazji to pretekst na dodatkowej promocji. Bywaja jak mozesz blyskawiczne porusza: wplac w dzisiejszych czasach, a nastepnego dnia mozesz dostac spiny. Warte kazdego grosza cieszy sie dozwolone ocena wiek-mail czasami zagladac na strone codziennie.<\/p>\n

W dowolnym momencie podobal Mezczyzni i kobiety sie slots welcome motywacja NVcasino, technologia informacyjna te stale da ci po prostu podkrecaja molestowac. Fillip jest wlasciwie to, wymagania rozsadne, skuteczny wszystko dziala raczej niz stresu. Tylko klikasz, grasz i masz nawet wiecej.<\/p>\n

Uzywanie na NVcasino prawdziwy sie oplaca. Ludzie obliczony posiadanie prawdziwa gotowka technologia informacyjna punkty lojalnosciowe, i to ale zmieniaja sie na korzysci. Im wiekszy grasz, tym szybciej awansujesz – dobry poziomow VIP sa, wszyscy progresywnie lepszymi bonusami.<\/p>\n

W wyzszych poziomach mozesz skorzystac z polegac na cotygodniowy cashback, priorytetowe zyski i takze osobistego opiekuna profil, dokladnie kto dba o Twoje wlasne wymagan. Wydaje sie byc jak mozesz propozycje prezentow: jak ekskluzywnych bonusow, przez darmowe spiny, co przyjecia fizyczne nagrody jesli czy nie zaproszenia do specjalne wydarzenia siec.<\/p>\n

Awansowanie jest proste – grasz w slotach, zbierasz sprawy i bedziesz co miesiac sprawdzasz swoj szczyt. To nie jest konieczne nic klikac, uklad robi wszystko posiadania Ciebie. Swietny jesli jestes n urok Cie z VIP-klubu \ufffd zamiast chetnoscia.<\/p>\n

Dla prawie wszystkich graczy technologia informacyjna wlasnie takie dodatkowe korzysci robia najwieksza roznice. Czasem powinienes kupic motywacja znacznie deposit NVcasino poniewaz, twoj wierny i czesto grasz. To jak kasyno hazardowe twierdzi: “Z powodu, twoj z nami!” – i to doswiadczyc.<\/p>\n

Rodzaj bonusow wziac pod uwage w NVcasino<\/h2>\n

Wiele reklamy moga wymagac specjalnego hasla, jak. dodatkowy code 2025 \ufffd korzystne sledzic najnowsze porusza na stronie albo nawet w newsletterze, by nie pominac okazji. Duzo warunki jest wlasciwie wyraznie powyzej i bedziesz dostepne w regulaminie wszystko bonusu.<\/p>\n

Od zapewnic i korzysc z dodatkowy bonus do NVcasino \ufffd krok po kroku<\/h2>\n

Wziecie bonusu na NVcasino oni latwy proces, chociaz grasz pierwszy raz. Kazdego zaczyna sie od rejestracja w celu. Wypelniasz formularz, potwierdzasz na wschod-mail i wszystko gotowe – konto dzieje sie. W przypadku, kasyna nawet oferuje naprawde deposit dodatkowy NVcasino, mozesz dostac go natychmiast kontynuowaniu weryfikacji informacji. Technologia informacyjna swietna opcja, otrzymac zagrac raczej niz wplaty.<\/p>\n

Wolisz skorzystac z wiekszego bonusu? Wplac przynajmniej 80 zl i stymuluj oferte powitalna. Dodatkowy pojawi sie sam, bez wpisywania kodu. W odniesieniu do rozne inne reklama – czasem trzeba kliknac “Aktywuj” na stronie z promocjami, zanim wplacisz metody.<\/p>\n

Darmowe spiny trafiaja dzisiaj w wybrane automaty do gier – ekspert wchodzisz na gre i bedziesz krecisz. Bonusowe kroki w kasie jesli uzywasz poniewaz zwyklych gotowki, tylko z ograniczeniami: nie wyplacisz twoje wlasne obecnie. Pierwszy musze spelnic tzw. wymog obrotu, czyli zagrac okreslona liczba razy (np. 35x godny bonusu).<\/p>\n

Wszystko bonusow ma maksimum a-czasowy – normalnie 1 tydzien. Po tym czasie niewykorzystany dodatkowy bonus wygasa. Zawsze sprawdzaj informacje wewnetrzne zanim zaczniesz – wiekszosc jest z pewnoscia na zakladce “Promocje” albo nawet w regulaminie.<\/p>\n

Dla tych, ktorzy maja zapytania, support odpowiada przyjecia polsku, swietny wszystko dziala nawet na telefonie. Premia z NVcasino jest wlasciwie przejrzyste, rozsadne i niezwykle prostego do zatrudnienia – wystarczajaco par klikniec i mozesz aby sobie poradzic wiecej niz wplaciles.<\/p>\n

Tozsamosc i przeznaczenie uzytkownicy Witamy z \ufffd niezaleznej, informacyjnej platformie poswieconej analizie gier cyfrowych, doswiadczeniom uzytkownikow oraz zjawiskom zwiazanym ktorzy maja branza kasyn online na calym swiecie. Nie prowadzimy dzialalnosci hazardowej, nie jestesmy operatorem i nie rob dolacz, nie zapewniamy zakladow wzajemnych czy czy nie gier losowych.<\/p>\n","protected":false},"excerpt":{"rendered":"

Stale reklamy i regularne okolicznosci z NVcasino NVcasino power of thor megaways to nie tylko filip z start – tu rzeczy sie dzieje caly czas. Na ludzie poniedzialek potrzebuje reload bonus na nowa wplate, a w piatki rozdaja bezplatne spiny. Sroda? Cashback do straty ktorzy maja poprzednich tydzien kalendarzowy. To\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-81218","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81218","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=81218"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81218\/revisions"}],"predecessor-version":[{"id":81219,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81218\/revisions\/81219"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81218"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}