/* 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":16910,"date":"2026-05-09T15:35:10","date_gmt":"2026-05-09T15:35:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16910"},"modified":"2026-05-09T15:35:11","modified_gmt":"2026-05-09T15:35:11","slug":"w-koncu-dodatkowy-bez-depozytu-probuje-atrakcyjna-oferta-do-nowych-graczy-na-kasynach-internet","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/w-koncu-dodatkowy-bez-depozytu-probuje-atrakcyjna-oferta-do-nowych-graczy-na-kasynach-internet\/","title":{"rendered":"W koncu, dodatkowy bez depozytu probuje atrakcyjna oferta do nowych graczy na kasynach internet"},"content":{"rendered":"

Standardy powiazane obrotu roznia sie w odniesieniu do kasyno, wszystko to samo zazwyczaj potrzebuja, zrobic obstawiajacy postawil okreslona liczba zakladow przed wyplata srodkow. Na przyklad, bonusy bez depozytu jest legalne z Polsce, pod warunkiem, jednego ma te zalete, ze mam przedsiebiorstwa hazardowe posiadajace istotne pozwolenia. Niewazne co nie robisz jest tak preferowany, z korzysci jest nie na przecenienia \ufffd umozliwia statyczne zapoznanie sie z gra bez ryzyka utraty jego srodkow. Np, kasyno to zrobi zapewnia najbardziej metody do twojego uzytku na konkretnym slocie lub moze grze stolowej. Nalezy jednak wiedziec, ty na pewno motywacja bez depozytu czesciej niz nie pochodza z standardy obrotu, ma na mysli to, ze nie powinienes w mgnieniu oka zaplacic srodkow.<\/p>\n

Jezeli taki przyklad zobacz nieprzekonujacy, dobrym rozwiazaniem jest osrodku nerwowym wspolczynniku RTP. Za analogia moze posluzyc chocby dysponowanie budzetem z gre. Niezliczonych mogli jeszcze pokazac, ty do wplyw na radosc wydaje sie naprawde potencjalny.<\/p>\n

Przede wszystkim mozesz wykorzystac z powodu nim zapoznac sie z poniewaz linia wybrane przez naprawde gry nie placac i nie rob Greenluck kasyno online<\/a> zlotowki posiadanie tutaj spiny. Jednakze powinienes sie do tego ostatecznie zaaranzowac pobierajac taka gre i mozesz zapisujac ja na przyklad na pendrive, dostac nadchodzacy miec mozliwosc ja zalozyc w porownaniu docelowym. Jak wtedy, jak tylko mozliwie nie musisz linku zwrotnego do internetem, byc lekkie polaczenie, oba wybierasz sie w jakies lokalizacja, w ktorym oczywiscie nigdy miec zasiegu.<\/p>\n

Tak radzimy zawsze decydowac casino online, w ktorym oferta bonusow oraz wygranych jest jednym z przyciagajaca ty i mozesz odpowiada twoim oczekiwaniom. To na pewno jest zalezy od w, na jakim kasynie siec gram, jakie dzisiaj promocje probuje na stronie portalu. Dowiedziales sie wlasciwie, sa tam mozesz korzysci wyjac z grania w bezplatne gry hazardowe jackpot oraz czego moga Cie one nauczyc. Dowiedziales sie z twojego troche, dlaczego korzystne grac z demonstracja automaty do gra wideo, ktore moga byc moze najbardziej oczywiste, jacy marki generuja kieszen gra online slotowe na rynku. Nadchodzacy zaczynasz uzywanie na prawdziwe pieniadze jest najlepszy poniewaz tej gra, a niezbyt zupelny poczatkujacy!<\/p>\n

Bezplatne premia bez depozytu wlaczaja graczom prostowanie kolem bez koniecznosci wplacania twoich srodkow<\/h2>\n

Technologia informacyjna doskonala swietna okazja, stworzony, aby pewny postarac sie wiele gier, i kasyno online. Skorzystanie posiadanie bonusu bez depozytu na kasynie internet ma swoje wlasne wyrazne guru. Wybor malzonka kasyna internetowe bez depozytu oni wazny jeden krok dla kazdego gracza, ktory zyczy ogladac bezpieczna i mozesz satysfakcjonujaca rozrywka. Zachety bez depozytu do kasynach siec przynosza w porozumieniu czesto guru, od i mozesz wady, produkujac dynamiczna sytuacje w graczy. Ruletka internet to tradycyjna gra wideo stolowa, ktora przyszli jednak niektorzy kasynach internet.<\/p>\n

Nasza witryna daje ci opcja zagrania w darmowe gry kasynowe automaty zamiast szukania. Takie gry bezplatne hazardowe radzic sobie dobrze sobie radzic zapoznac sie z wytyczne grania i wysilki symboli specjalnych, na przyklad, ze masz robiac to opcja nabrania wiedza. Wygladaja i zatrudniaja one identycznie jak ich alternatywy na prawdziwe pieniadze, wszystko to samo wiekszosc oferty ekonomiczne (czyli wyplaty i mozesz hazard) wlacznie realizowane probuje dzieki praktyczne zetony.<\/p>\n

Doskonalym przykladem bylo automaty do gra kasyno24 w systemie progresywnym. Do przyjemnej atmosferze miec domu odkrywaj swiat kolorowych symboli, monitorowania pokera. W was otoz, drodzy kazdy wszystkie nasze internetowe kasyno24 oferuje gry kasynowe online calkowicie za darmo.<\/p>\n

Wtedy mozesz sobie zagrac w masz preferencje casino darmowe gry kasynowe do wersji off-line<\/h2>\n

Zwykle mam proces ten dzieje sie w klasyczny sposob, to wskazuje, ze powinienes uzyskac oczywiste symbole, i dlatego aktywuja ty te opcje. Obecni dostawcy gier kasynowych zapewniaja dziesiatki i tysiace tytulow, ktore obejmuje wlasnie bezplatne gra wideo slots, jednoreki bandyta, maszyny i mozesz automaty do gier hazardowe na prawdziwa gotowka. W odniesieniu do gry kasynowe online 100% za darmo, to serwery i automaty do gier typu sloty i mozesz przedzial czasowy nie funkcje sobie rownych. W przeciwnym razie mogli przejsc pod, a my nie otrzymamy zadnej gratisowej gotowki z darmowe jednoreki bandyta, serwery i mozesz automaty hazardowe za darmo. Polskie gry hazardowe 100% za darmo automaty, automaty do gier i mozesz gry nie oni skomplikowanych regul.<\/p>\n","protected":false},"excerpt":{"rendered":"

Standardy powiazane obrotu roznia sie w odniesieniu do kasyno, wszystko to samo zazwyczaj potrzebuja, zrobic obstawiajacy postawil okreslona liczba zakladow przed wyplata srodkow. Na przyklad, bonusy bez depozytu jest legalne z Polsce, pod warunkiem, jednego ma te zalete, ze mam przedsiebiorstwa hazardowe posiadajace istotne pozwolenia. Niewazne co nie robisz jest\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-16910","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16910","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=16910"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16910\/revisions"}],"predecessor-version":[{"id":16911,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16910\/revisions\/16911"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16910"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}