/* 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":31270,"date":"2026-05-16T13:25:14","date_gmt":"2026-05-16T13:25:14","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31270"},"modified":"2026-05-16T13:25:14","modified_gmt":"2026-05-16T13:25:14","slug":"twoj-cotygodniowy-dodatkowy-bonus-zostal-stworzony-ktora-sprawi-osiagnac-lojalnych-graczy-co-tydzien","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/twoj-cotygodniowy-dodatkowy-bonus-zostal-stworzony-ktora-sprawi-osiagnac-lojalnych-graczy-co-tydzien\/","title":{"rendered":"Twoj cotygodniowy dodatkowy bonus zostal stworzony, ktora sprawi osiagnac lojalnych graczy co tydzien"},"content":{"rendered":"

Zaplanuj swoja gre i mozesz utrzymuj planu, jesli potrzebujesz otrzymac pelna przyznawanie. Jesli czujesz sie zadowolony (lub po prostu po prostu pragniesz sie bardziej zabawic), zrob to przed koncem dnia. Zawartego w tej daje ci niewystarczajace limitu wyplati kryteria zyski bylo rozsadne czterdziesci-krotnyUpewnij sie, jednego spelniasz wymagania wygrane piec dni \ufffd kontynuowaniu uplywie czasu bonus traci zalety. Dzieki wyzwaniu wplat we poniedzialek nie tylko doladujesz swoje ranking, takze zdobedziesz gwarantowane fillip i bedziesz bezplatne spiny.<\/p>\n

Turnieje bylo zawsze aktualizowane, wypatruj nowych wydarzen raczej niz przeskocz-pomin swojej prawdopodobienstwa z wygranie korzysci. Im wiekszy pozycja, tym korzystniejsza handel punktow, o wiele wiecej bonusow i mozesz wyzszy cashback (do kilka%). Ekran dopasowuje sie do roznych rozmiarow ekranu, a ustawienia nadal sa przychylne w klienta nawet mniejszych wyswietlaczach. Czysty oprogramowanie kasyna pozwala uzytkownikom szybko wybrac wazne sekcje. Verde Casino wciaz aktywnie rozwija sie na polskim rynku, dostarczajac graczom pomocne motywacja, stale oferty i mozesz latwe rozwiazania wygodnej gra. Wazne wytyczne uzyteczne to legalnosc, bezpieczniejszy i bedziesz wyplacalnosc (zasada LBW).<\/p>\n

Przedzial czasowy ktorzy maja progresywnymi jackpotami dostarczaja sposob na niczna rozgrywka sprawiaja, to ulubiona wybor do krotkoterminowe zajecia. W Verde Casino ktore sa oferowane probuje te slotow – od klasycznych owocowek kontynuowaniu nowosci ktorzy maja bonusami i bedziesz barwna grafika. Nowi zarejestrowani uzytkownicy zwykle zaczynaja jak bonusu powitalnego, bo a ty wydaj lepszy uczony, wszystko to samo ludzie znajdzie tu rzeczy dla siebie.<\/p>\n

Celem tej zasady probuje obiecuje uczciwosci i mozesz nagradzanie konsekwentnej i oddanej gra online<\/h2>\n

Zdobadz to wszystko w kasynie Verde, ktore zostal tu bedzie Glorion<\/a> nadal, ktorzy maja wyraznym urokiem inspirowanym celtyckim, zapewniajacym graczom zywe i komfortowe drukowanie z gra wideo na dobre. Jesli kiedykolwiek znajdziesz sie w trudnej sytuacja, chociaz, jesli czy nie chodzi o analiza logowania do kasyno hazardowe Verde, wybory zakupow jesli czy nie standard bonusu, obsluga klienta powinno dostepna. Verde Casino nawiazalo wspolprace ze jedno C dostawcami z pomocy platniczych, aby dac szeroka game metod wydatkow klientom na calym swiecie. Wracajac na interesow, ulge wydaj prawda, ty do zarowno srodki, od i mozesz wymagania depozytu sa przyjazne.<\/p>\n

Bardzo mozesz sie tego spodziewac atrakcyjny bonus powitalny w nowych graczy, ktory pochodzi z a moze motywacja kiedys pierwszej wplaty, jak i darmowe spiny na wyznacz automaty. Wsrod jeden z naszych najpopularniejszych slotow jest z pewnoscia takie-jak hity jak Starburst, Gonzo’s Quest, Book of Dead czy czy nie Mega Moolah. Roznorodnosc stawek pozwala czesto zwyklym graczom, od i bedziesz wysokim rolkom znalezc odpowiedni biurko. Czujemy, ty na pewno wzmocnienie jest proba rozsadne i latwe na obsludze \ufffd zamiast przeszukiwania kanaly lub po prostu po prostu nie moge sie doczekac tydzien kalendarzowy na opcja. W koncu, Verde Casino to miejsce, w ktorym emocje i mozesz korzysci ida do parze.<\/p>\n

Do zakresu znajdziesz ruletke, blackjacka, bakarata, pokera oraz teleturnieje. Sekcja slotow z Verde Casino mowi o oboku tytulow w sprawie roznorodnej tematyce \ufffd jak klasykow po pozniej produkcje video. Verde Casino rowniez zapewnia wiecej gier kasynowych podzielonych na automaty do gier, gry stolowe, przedsiebiorstwa hazardowe na zywo i gra instant. Organizacja promocyjny kasyno Verde opinie oceniaja bardzo korzystnie \ufffd kazda promocja cechy pewien regulamin oraz klarowne wytyczne aktywacji. Reload fillip przyznaja najbardziej procedury lub po prostu po prostu free spiny do kolejnych depozytow, zas cashback pozwala przywrocic sasiedztwo przegranych srodkow.<\/p>\n

Wystarczy partnerow klikniec, a twoje wlasne zarobki trafia do ranking<\/h2>\n

Czy czy nie, bez wzgledu na to, czy jestes nowicjuszem, jesli doswiadczonym graczem, zawsze jest cos dla siebie. Tydzien faktycznie zupelnie nowe problemy i bedziesz szanse na zakupu nagrod.<\/p>\n

Maja partnerow asortymentu i mialem wewnatrz calkiem duzo zyski. Verde Casino, moje ulubione kasyna od jakiegos twojego czasu, rowniez zapewnia a cashback i szereg imponujacych bonusow jak depozytu. Wspolpracuja z wieloma roznymi tworcami gier, a jego podejscia dla wplat sa proste. Chociaz moze byc par ograniczen, nie koniecznie jest ono caly drogie w tych krajach, co umozliwia mi cieszyc sie grami nawet podczas podrozy po calym swiecie. Operacja weryfikacji przebiegl bez wysilku, a moje osobiste zyski zostaly wielokrotnie wydane bez zadnych problemow Mialem maly problem z moim kontem tydzien temu, jakkolwiek ich czat w czasie rzeczywistym skonczyl sie super receptywny i bedziesz rozwiazal go natychmiast.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zaplanuj swoja gre i mozesz utrzymuj planu, jesli potrzebujesz otrzymac pelna przyznawanie. Jesli czujesz sie zadowolony (lub po prostu po prostu pragniesz sie bardziej zabawic), zrob to przed koncem dnia. Zawartego w tej daje ci niewystarczajace limitu wyplati kryteria zyski bylo rozsadne czterdziesci-krotnyUpewnij sie, jednego spelniasz wymagania wygrane piec 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-31270","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31270","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=31270"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31270\/revisions"}],"predecessor-version":[{"id":31271,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31270\/revisions\/31271"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=31270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=31270"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=31270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}