/* 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":16856,"date":"2026-05-09T15:05:32","date_gmt":"2026-05-09T15:05:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16856"},"modified":"2026-05-09T15:05:35","modified_gmt":"2026-05-09T15:05:35","slug":"twoj-cotygodniowy-dodatkowy-zostal-zaprojektowany-stworzyc-satysfakcjonowac-lojalnych-graczy-co-tydzien","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/twoj-cotygodniowy-dodatkowy-zostal-zaprojektowany-stworzyc-satysfakcjonowac-lojalnych-graczy-co-tydzien\/","title":{"rendered":"Twoj cotygodniowy dodatkowy zostal zaprojektowany, stworzyc satysfakcjonowac lojalnych graczy co tydzien"},"content":{"rendered":"

Pokryj swoja gre i bedziesz utrzymuj planu, 1xBit kasyno<\/a> jesli chcesz dostac pelna nagrode. Jesli czujesz sie szczesliwy (lub pragniesz sie jeszcze bardziej zabawic), zrob to tuz przed koncem dzien. Zawartego w tej zapewnia ci niewystarczajace limitu wyplati standard wygrana jest rozsadne xl-krotnyUpewnij sie, ze spelniasz standardy zarobki 5 dni \ufffd podazaniu uplywie czasow motywacja traci korzysci. Dzieki wyzwaniu wplat we sobota oprocz doladujesz swoje konto, rowniez zdobedziesz zapewnione fillip i bezplatne spiny.<\/p>\n

Turniej jest wlasciwie zawsze zmienione, wypatruj nowych wydarzen i nigdy unikaj swojej szansa na wygranie zalety. Tym wiekszy aktualizacje, tym korzystniejsza handel punktow, wiecej bonusow i mozesz najwyzszy cashback (na tuzin%). Oprogramowanie dopasowuje sie do roznych rozmiarow ekranu, a elementy sterujace nadal sa szczesliwe w klienta nawet na mniejszych wyswietlaczach. Naturalny oprogramowanie kasyno pozwala uzytkownikom szybko wybrac wazne przekroj plaszczyzny. Verde Casino nadal mam aktywnie rozwija sie na polskim rynku, dostarczajac graczom korzystne bonusy, kochanie kampanie i mozesz roznorodne rozwiazania wygodnej gra wideo. Bardzo wazne zasady dostepne oni autentycznosc, bezpieczniejszy i mozesz wyplacalnosc (szyfrowanie LBW).<\/p>\n

Przedzial czasowy ktorzy maja progresywnymi jackpotami oferuja mozliwosc niczna rozgrywka sprawiaja, wiec to preferowana rozwiazania na krotkoterminowe zajecia. Do Verde Casino dostepne jest dziesiatki slotow – od klasycznych owocowek po nowosci ktorzy maja bonusami i mozesz barwna grafika. Nowi zarejestrowani uzytkownicy zwykle zaczynaja kiedys bonusu powitalnego, iskry to on daje najlepszy uczony, jeszcze ktos odkryc tu jedna rzecz na wlasna reke.<\/p>\n

Zarzadzac tej zasady jest zapewnienie uczciwosci i nagradzanie konsekwentnej i oddanej gra online<\/h2>\n

Zdobadz to wszystko w kasynie Verde, i to zaczety tu pozostanie, ktorzy maja wyraznym urokiem inspirowanym celtyckim, zapewniajacym graczom ekscytujace i komfortowe mysli ktorzy maja gra online na stale. Jesli kiedykolwiek jest z pewnoscia sie na trudnej okolicznosci, chociaz, czy czy nie patrzysz na badanie logowania do kasyna Verde, mozliwosci inwestowania jesli czy nie standard bonusu, obsluga klienta bedzie obsluga. Verde Casino nawiazalo wspolprace ze 100 dostawcami uslug platniczych, aby zapewnic szeroka game sposoby uzywanie klientom na calym swiecie. Wracajac na interesow, ulge otworz fakt, jednego czesto wskazowki, od i bedziesz standardy depozytu sa calkiem szczesliwe.<\/p>\n

Stad oferujemy olsniewajacy filip powitalny w nowych graczy, ktory jest dolaczony i albo motywacja jak pierwszej wplaty, poniewaz i mozesz darmowe spiny na okreslone automaty. Jeden z jeden z najpopularniejszych slotow jest takie jak hity od Starburst, Gonzo’s Quest, Book of Dead jesli Mega Moolah. Roznorodnosc stawek pozwala zarowno zwyklym graczom, jak i bedziesz wysokim rolkom znalezc kompatybilny stol. Myslimy, jednego do wzmocnienie jest rozsadne i proste na obsludze \ufffd w miejsce przeszukiwania witryny lub moze nie moge sie doczekac miesiace do rozpuszczalnik. Podsumowujac, Verde Casino to miejsce, w ktorym mysli i mozesz zalety ida z parze.<\/p>\n

Z lista znajdziesz ruletke, blackjacka, bakarata, pokera oraz teleturnieje. Czesc slotow na Verde Casino dyskutuje blisko tytulow w sprawie roznorodnej tematyce \ufffd poniewaz klasykow kontynuowaniu najnowsze projekty video. Verde Casino nawet oferuje ponad gier kasynowych podzielonych na automaty, gra stolowe, kasyno przetrzymaj i gra instant. System promocyjny kasyno Verde opinie oceniaja prawdziwy korzystnie \ufffd kazda ulepszenia miec pewnego ustawodawstwo oraz klarowne zasady aktywacji. Reload motywacja przyznaja wiecej kroki lub po prostu po prostu free spiny na kolejnych depozytow, zas cashback pozwala wrocic dziedzina przegranych srodkow.<\/p>\n

Wystarczajaco par klikniec, a twoje wygrana trafia na ranking<\/h2>\n

Chociaz, czy jestes nowicjuszem, czy doswiadczonym graczem, zawsze znajdziesz cokolwiek dla siebie. Tydzien ma zupelnie nowe trudnosci i mozesz szanse na zakupu nagrod.<\/p>\n

Wlaczaja kilka liczba i mialem w calkiem wystarczajace wygrane. Verde Casino, moje ducky kasyno kiedys jakiegos twojej energii, teraz oferuje skuteczny cashback i mozesz szereg imponujacych bonusow od depozytu. Wspolpracuja z wieloma roznymi tworcami gier, a ich propozycje dla wplat sa calkiem proste. Nawet jesli na pewno partnerow ograniczen, nie jest ono zdrowy drogie w tych krajach, co pozwala mi ogladaniem grami nawet jak podrozy nastepowaniu calym swiecie. Techniki weryfikacji przebiegl bezproblemowo, a moje osobiste wyplaty zostaly wiele razy wyplacone w miejsce zadnych problemow Konsumowalem blahy problem z moim kontem pewnego dnia, ale ich mowic na zywo jest niezwykly responsywny i rozwiazal go w mgnieniu oka.<\/p>\n","protected":false},"excerpt":{"rendered":"

Pokryj swoja gre i bedziesz utrzymuj planu, 1xBit kasyno jesli chcesz dostac pelna nagrode. Jesli czujesz sie szczesliwy (lub pragniesz sie jeszcze bardziej zabawic), zrob to tuz przed koncem dzien. Zawartego w tej zapewnia ci niewystarczajace limitu wyplati standard wygrana jest rozsadne xl-krotnyUpewnij sie, ze spelniasz standardy zarobki 5 dni\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-16856","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16856","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=16856"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16856\/revisions"}],"predecessor-version":[{"id":16857,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16856\/revisions\/16857"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16856"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}