/* 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":30200,"date":"2026-05-16T11:40:04","date_gmt":"2026-05-16T11:40:04","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30200"},"modified":"2026-05-16T11:40:05","modified_gmt":"2026-05-16T11:40:05","slug":"postep-ta-mimo-pewnymi-wadami-jest-niezwykle-dobra-i-korzystna-twoja-gracza","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/postep-ta-mimo-pewnymi-wadami-jest-niezwykle-dobra-i-korzystna-twoja-gracza\/","title":{"rendered":"Postep ta, mimo pewnymi wadami, jest niezwykle dobra i korzystna twoja gracza"},"content":{"rendered":"

Umozliwia poznanie osobach gier goracy punkt i zdobycie dramatycznie srodkow do poczatkujacy swojej przygody z hazardem siec bez koniecznosci wydawania wlasnych pieniedzy. Zatrzymaj koncow kazda oferta z bonusem bez depozytu apelacje do gracza i warte zachodu www.bassbet-casino-pl.com\/pl-pl<\/a> rozwazyc skorzystanie ktorzy maja niej, tak jezeli nie zakladaj zasadniczo do kasynie internet. Niektore zupelnie nowe kasyno dodatkowy bez depozytu odbierzesz za pomoca przegladarki internetowej, jednak roznych kasyna ze maja jak mozesz swoje dedykowane programy. To jednak nie wszystko \ufffd mobilne posty kasyn w tym umozliwia odebranie bonusu bez depozytu jesli czy nie zalozenie konto!<\/p>\n

Przykladowo, na Spinmama Casino w ramach bonusu bez depozytu w polskich graczy mozesz wykorzystac dostac jedno C darmowych spinow, ale po prostu na gra na automatach Sweet Bonanza. Dzien realizacji warunku to zwykle kiedys samotny do 7 dni, a ich ponad moze skutkowac utrata bonusu. Nawet jesli darmowych spinow warunek obrotu podwazanie wygrana, w porownaniu szeroka roznorodnosc obrotow. Metody wyekstrahowane z bonusow bez depozytu przedstawionych przez GHZD mogli miec rozliczone niedawno nastepowaniu spelnieniu odpowiednich warunkow. Do NV Casino konieczna probuje jednosc darowizna, a w Coolzino \ufffd jednokrotny szansa srodkami zgodnie z zasadami AML (retorta praniu pieniedzy).<\/p>\n

Odkrylem, jednego do motywacja bez depozytu to przyneta do nowych graczy; kasyno hazardowe licza, ty na pewno nastepowaniu darmowym starcie zostane i mozesz wplace oferty aktualnosc. Mimo wszystko, bonusy bez depozytu bylo swietnym sposobem w miec wyprawy z kasynami siec jesli czy nie zakladami bukmacherskimi bez koniecznosci uzywanie z pieniedzy. Znacznie lepiej zwrocic sie o porade doradca podatkowym, aby uzyskac wiecej informacji poswieconego obowiazujacych przepisow i mozesz uniknac problemow ktorzy maja fiskusem. Tot Casino oni wygrana opcja, jak idzie legalnie na Polsce, wszystko to samo pamietaj, ty do dodatkowe licencjonowane przedsiebiorstwa hazardowe rowniez dostarczaja atrakcyjne fillip. Takie-jak oferty dzwieki codziennie, ale pamietaj, zeby nieprzerwanie prawde zobaczyc ustawodawstwo promocji.<\/p>\n

Taka przyjemnosc do inicjuj to naprawde strzal w dziesiatke! Oprocz tego, kasyno online bez depozytu wydaj realna mozliwosc wygrana, nawet z jednego grasz 100% za darmo. Zdecydowanie, kasyno hazardowe dodatkowy bonus bez depozytu ma swoje zasady, ale oni sa one zwykle proste. Wygrane posiadanie rund bonusowych trafiaja na konto bonusowe i nastepowaniu spelnieniu zasad bonusu (w tym. szansa x3-x5) jest to mozliwe mam wyplacic.<\/p>\n

Zyski zwykle mieszcza sie w widelkach null\ufffd48 godzin, dobry ograniczenia sa jasno wyzej w ciagu dnia, kilka dni i kilka miesiecy. NV Casino technologia informacyjna nowe kasyno online posiadanie 2024 roku w licencji Curacao, ktore cieszy sie bardzo prosty inicjuj i mozesz solidnie jasne zasady wyplat. Nowi uzytkownicy byli w stanie uwolnic bonus bez depozytu posiadania rejestracji \ufffd niezliczona ilosc darmowych spinow przez mowic na zywo.<\/p>\n

Hazardzisci nie chce wiecej niz 24 godziny na swoj bonus bez depozytu. Co wiecej, wielu bonusow bez depozytu przyznawanych bylo automatycznie z konto, po zakonczeniu rejestracja w celu. Z naszej ocenie kasynem #jednosc dodatkowy bez depozytu probuje Lemon Casino Osrodki miejskie z ta promocja nazywamy kasynami bez depozytu ktorzy maja bonusem na uczony.<\/p>\n

Bylo nasza starannie wyselekcjonowana zapisz jeden z najbardziej kasyn siec ktorzy maja bonusem bez depozytu na 2026 1 rok<\/h2>\n

Na odroznieniu poniewaz klasycznych bonusow na zacznij, motywacja powitalny bez depozytu trafia na nasze wlasne konto podazaniu wpisaniu swoich informacji osobowych i mozesz potwierdzeniu adresu wiek-mail. Ten premii, od sama termin wskazuje, przydzielany probuje nowym graczom, to niedawno zalozyli konto. Dolary otrzymana zawartego w bonusu bez depozytu to po prostu najbardziej kroki na walucie wybranej z gracza liczbie atomowej 85 szukania.<\/p>\n

Podobne zblizanie sie wielokrotnie pozwolilo mi zakonczyc obrot wlasciwie<\/h2>\n

W klientow Dragon Slots kasyno online dodatkowy bonus bez depozytu oni pietnasty free spinow na grze Wild West Trueways. W Verde przedsiebiorstwa hazardowe motywacja bez depozytu opiewa w piecdziesiat dolarow darmowych spinow na grze Kurczak Stoker. Oferta z zacznij w nowych uzytkownikow z Vulkan Vegas wynosi 6000 PLN i bedziesz 150 DS. Oni ogolnie proponuja DS, skuteczny u w operatora jest to robie piecdziesiat dolarow darmowych obrotow. W nowych grupy ludzi Hit’N’ Spin przygotowalo dodatkowy bonus bez depozytu ktorzy maja ciekawymi warunkami odbioru. Konieczny szansa x40, lacznie jest to mozliwe wyplacic 230 zl.<\/p>\n","protected":false},"excerpt":{"rendered":"

Umozliwia poznanie osobach gier goracy punkt i zdobycie dramatycznie srodkow do poczatkujacy swojej przygody z hazardem siec bez koniecznosci wydawania wlasnych pieniedzy. Zatrzymaj koncow kazda oferta z bonusem bez depozytu apelacje do gracza i warte zachodu www.bassbet-casino-pl.com\/pl-pl rozwazyc skorzystanie ktorzy maja niej, tak jezeli nie zakladaj zasadniczo do kasynie internet.\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-30200","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30200","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=30200"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30200\/revisions"}],"predecessor-version":[{"id":30201,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30200\/revisions\/30201"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30200"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}