/* 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":81098,"date":"2026-05-23T05:47:43","date_gmt":"2026-05-23T05:47:43","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81098"},"modified":"2026-05-23T05:47:45","modified_gmt":"2026-05-23T05:47:45","slug":"rozumienie-bylo-zachety-bez-depozytu-na-kasynie-za-rejestracje","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/rozumienie-bylo-zachety-bez-depozytu-na-kasynie-za-rejestracje\/","title":{"rendered":"Rozumienie bylo zachety bez depozytu na kasynie za rejestracje?"},"content":{"rendered":"

Zwykle zawodowi sportowcy moga wykorzystac bezplatne obroty na wybranym automacie<\/h2>\n

Witamy Madame Destiny kasyno<\/a> na stronie internetowej poswieconej bonusom bez depozytu w kasynach online. Dolacz do ekscytujacego swiata hazardu, gdzie duzo pieniedzy usmiecha sie na odwaznych i mozesz ryzykownych graczy. Stworzyc Dla kazdego podroze rozpoczela sie z latwoscia i zamiast trosk, zacznij od darmowych bonusow posiadania rejestracji. Fillip bez depozytu w kasynie stana sie Twoim przewodnikiem z pierwszych zwyciestw i mozesz wielkich wygranych. To nie jest konieczne sa w niebezpieczenstwie jego srodkow, stworzyc przejsc przez najbardziej doswiadczyc przewaga. Wyprobuj swoje radosc juz niezwlocznie, nie kupujac i nie rob grosza! Zowita zakladaj, gdzie kazdy obliczony moze zmienic Twoje zycie i stac sie niezwykla historia sukcesu. Kiedykolwiek gotowy na gre, to by zaden z nich poczatkowych inwestycji, kontynuuj na pierwszych zwyciestw! Poznaj bonusy bez depozytu na kasynach na 12 miesiecy 2025 i wybierz ten rodzaj odpowiedni dla naprawde.<\/p>\n

Dodatkowy bonus bez depozytu w Kasyna Cactus Kwota premii: Kod rabatowy: Dla Dog House Oferowane w krajach: W wiekszosci krajach pominiecia Stany zjednoczone Filip bez depozytu w Kasyno hazardowe Vavada Kwota premii: Kod promocyjny: Dla wszystkich Great Pigsby Megaways, Jesli chodzi o Wicked Witches Oferowane w krajach: Motywacja bez depozytu w Kasyna PlayFortuna Kwota premii: Kod promocyjny: Book of Dead Oferowane w krajach: Dodatkowy bonus bez depozytu na Kasyno Booi Poziom premii: Kod kuponu: Cats and Cash Oferowane w krajach: Dodatkowy bez depozytu na Kasyno 1xSlots Kwota premii: Kod promocyjny: Cybergirls Oferowane w krajach: Polska, Rosja, Kazachstan, Uzbekistan, Ukraina, Turcja, Tadzykistan, Kanada, Brazylia Dodatkowy bez depozytu do Kasyno Riobet Kwota premii: Kod rabatowy: FREEGAMBLE Book Of Dead Oferowane w krajach: Polska, Rosja, Bialorus, Kazachstan, Uzbekistan, Brazylia Filip bez depozytu z Kasyno hazardowe Spinbetter Poziom premii: Kod promocyjny: Dla kazdego Dog House\ufffd Oferowane w krajach: Polska, Rosja, Kazachstan, Uzbekistan, Brazylia, Bialorus Motywacja bez depozytu na Kasyna Fresh Poziom premii: Kod promocyjny: Doors Of Fresh Dostepne w krajach: Bonus bez depozytu z Przedsiebiorstwa hazardowe Starda Stopnia premii: Kod kuponu: All Lucky Clover piec Dostepne w krajach: Dodatkowy bez depozytu na Kasyno hazardowe Lex Kwota premii: Kod rabatowy: Book of Cats Dostepne w krajach: Polska, Rosja, Kazachstan, Uzbekistan, Ukraina, Azerbejdzan, Niemcy, Czechy, Litwa, Lotwa Dodatkowy bez depozytu na Kasyno Monro Stopnia premii: Kod rabatowy: Savage Buffalo Spirit Megaways Oferowane w krajach: Dodatkowy bez depozytu z Kasyno hazardowe Drip Stopnia premii: Kod promocyjny: Royal High-Road Oferowane w krajach: Filip bez depozytu w Kasyna 1Go Stopnia premii: Kod promocyjny: Dla wszystkich Dog House, Cleocatra, Gates of Olympus, Book of Cats Oferowane w krajach: Bonus bez depozytu na Przedsiebiorstwa hazardowe Izzi Poziom premii: Kod rabatowy: Dragon`s Gold setki Oferowane w krajach: Dodatkowy bez depozytu w Kasyna Jet Kwota premii: Kod promocyjny: Dragon`s Gold jedno C Oferowane w krajach: Dodatkowy bonus bez depozytu na Kasyno hazardowe Legzo Kwota premii: Kod rabatowy: Dragon`s Gold setki Dostepne w krajach: Filip bez depozytu na Kasyno Auf Stopnia premii: Kod promocyjny: Dla Dog House Oferowane w krajach: Polska, Rosja, Bialorus, Kazachstan, Uzbekistan, Ukraina Motywacja bez depozytu na Kasyna Cryptoboss Stopnia premii: Kod promocyjny: Twoja Dog House Oferowane w krajach: Polska, Rosja, Bialorus, Kazachstan, Uzbekistan, Ukraina Dodatkowy bonus bez depozytu do Kasyno Unlim Kwota premii: Kod promocyjny: Dla kazdego Dog House Dostepne w krajach: Polska, Rosja, Bialorus, Kazachstan, Uzbekistan, Ukraina<\/p>\n

Rynek kasyn siec nieustannie kielkuje, otwierajac tuz przed graczami zupelnie nowe pasje i mozesz wybor<\/h2>\n

Obecnie hazard online gospodarstwo na zawrotnym tempie. Aby utrzymac sie w branzy i mozesz wytrzymac konkurencje, strony kasyn musza nieprzerwanie tworzenie zupelnie nowe sugeruje atrakcyjny dla i mozesz zatrzymywania graczy. Bonusy bez depozytu w kasynach staly sie rozwiazaniem, i dlatego pozwala spelniac ktorego celem jest. Towary poniewaz kasyno probuje wspanialym wyrazem goscinnosci i mozesz lojalnosci projektu wobec graczy.<\/p>\n

Kasyno hazardowe bez depozytu dostarczaja darmowe spiny za rejestracji nowym graczom, wlaczanie rozpoczecie ekscytujacej podrozy po swiecie hazardu raczej niz uzywanie pieniedzy. To zapewnia wybor zapoznania sie ktorzy maja nowymi lub po prostu popularnymi automatami na gier, rowniez opinie kasyna online oraz jakosci oferowanych ekspertyzy. Premia bez depozytu otwieraja przedpokoj do swiata darmowych zakladow i wielkich wygranych, niczym sztuczka.<\/p>\n","protected":false},"excerpt":{"rendered":"

Zwykle zawodowi sportowcy moga wykorzystac bezplatne obroty na wybranym automacie Witamy Madame Destiny kasyno na stronie internetowej poswieconej bonusom bez depozytu w kasynach online. Dolacz do ekscytujacego swiata hazardu, gdzie duzo pieniedzy usmiecha sie na odwaznych i mozesz ryzykownych graczy. Stworzyc Dla kazdego podroze rozpoczela sie z latwoscia i zamiast\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-81098","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81098","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=81098"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81098\/revisions"}],"predecessor-version":[{"id":81099,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81098\/revisions\/81099"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81098"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}