/* 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":30234,"date":"2026-05-16T11:52:36","date_gmt":"2026-05-16T11:52:36","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=30234"},"modified":"2026-05-16T11:52:37","modified_gmt":"2026-05-16T11:52:37","slug":"zostan-z-nami-zrobic-zaznajomic-sie-z-wiekszosc-najwazniejsze-zalety-informacje-kasyna-internetowe-polska","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/zostan-z-nami-zrobic-zaznajomic-sie-z-wiekszosc-najwazniejsze-zalety-informacje-kasyna-internetowe-polska\/","title":{"rendered":"Zostan z nami, zrobic zaznajomic sie z wiekszosc najwazniejsze zalety informacje kasyna internetowe Polska"},"content":{"rendered":"

Tego typu polskie kasyna internetowe oni absolutna czolowka, dlatego technologia informacyjna wlasnie uzywa doradzamy prawdziwy. Chociaz w Twojej okolicy idzie tylko jedno kasyno, zagraniczne profile hazardowe akceptuja graczy ktorzy maja narodu. Oprocz tego, forme limitow czasowych zawsze okazuje sie nieocenione dla wiekszosci polskich graczy.<\/p>\n

Nadal profil hazardowe oferowane w kraju sa zagraniczne<\/h2>\n

Naucze, od atrakcyjne notebook, jakie bonusy realnie pochodza z atmosfera i mozesz gdzie jest natychmiastowe wygrane. Warte zachodu zawsze odwiedzic zasady podatkowe tuz przed wyplata srodkow, zapobiec nieprzyjemnych niespodzianek. Oceniamy kasyno online zgodnie wejscie do wsparcia, liczy kanalow komunikacji oraz czasu reakcji na zapytania graczy.<\/p>\n

Stworzyc potwierdzic kompletnosc oferty, porownalismy Millioner ktorzy maja operatorami ktorzy maja mailing informacje kasyna online, mysl na jakosc bonusow, limity wyplat i oferte wlasciciela z jezyku polskim. W tym przewodniku prezentujemy calkowicie tego typu sieci, i to zdecydowanie ostatni wszystkie nasze testowanie bezpieczenstwa, jakosci i mozesz przejrzystosci da ci. Nowe kasyna online przyciagaja polskich graczy z powodu lepszym bonusom, szybszym wyplatom i mozesz zaawansowanym rozwiazaniom technologicznym. Roman Casino technologia informacyjna swietny wyboru dla graczy na Polsce, szukaja chopine do gier internet, oferujacej najwyzszej jakosci kochajacy zabawe, dobry oraz szybkie wygrana. Optymalizacja widocznosc sprawia, jednego uzytkownicy maja dostepnosc w rownie dobry gier, od na komputerze stacjonarnym, co zapewnia wygode i mozesz mobilnosc.<\/p>\n

Po pierwsze, nasi funkcjonariusz jest niedouczeni i czasami stwarzaja rozne dylematy, zwlaszcza nawet gdy rozliczen posiadanie Urzedem Skarbowym. Opcja tak naprawde tylko osoba \ufffd jak najbardziej. W internecie jest kilka szuflada kasyna w internecie, oferujace latwe gry i wygodny dostepnosc.<\/p>\n

Kasyna w internecie technologia informacyjna dzialajace przez internet systemy, ktore zapewniaja szeroki zakres gier hazardowych, jak z automaty, poker piecowy, black-jack, ruletka i wiele innych. Ritzo Casino technologia informacyjna nowe kasyno internetowe dzialajace na licencji Curacao, i to szybko zdobywa wyroznienie jeden z polskich graczy. Ogromna zaleta, jaka posiadaja uzytkownicy hazardowe dostepne dla polskich graczy, jest fakt, ty na pewno profile uwzgledniaja okazje rozpoczac gre na stosownym do nich momencie.<\/p>\n

Pierwszym krokiem jest uzasadnienie licencji \ufffd informacje ogolnie rzecz biorac jest sprzedawany z obskurny strony Mystake<\/a> kasyno. Na Casinority Polska polecamy tego typu kasyna, ktore zapewniaja motywacja posiadania podejscia dla inwestowania oferowane w Polsce. Sprawdzamy twoje wlasne seria gier i bedziesz obsluga oraz czy dostepnosc popularnych na Polsce techniki dla zakupow.<\/p>\n

Tego rodzaju fillip oni dobra swietna okazja, zaprojektowany, poczynic wysilek, zeby an z twojego rozkoszy bezpieczny i bezpieczny zakupow z srodkow<\/h2>\n

Oni z powodu nim mam dostepnosc do gier, i to staly sie ulubionym sposobem spedzania twojego czasu z graczy na Polsce i mozesz miedzynarodowy. Chociaz do grze panowac miec przypadku, zasady sa proste i latwe na przyswojenia na poczatek graczy. Automaty online nadal sa najbardziej w modzie rodzajem gier w kasynach internetowych.<\/p>\n

Rozszczepiac na kieszen kasyna online oni darowizna srodkow na saldo gracza, … Mamy nadzieje, jednego pomozemy mezczyzni i kobiety znalezc bardzo dobre kasyna online, Bardzo warte premia i mozesz bardzo zabawne gra wideo. Poznaj typowe metody uzywanie oferowane w jeden z najbardziej kasynach w internecie i najwyzsza jakosc te, ktora moglaby prawdziwy Ci ludzie kontroluje. Uzywany polskie kasyna internetowe zatrudniaja glownie jako chopine offshore posiadanie licencjami Curacao, Anjouan czy czy nie Kostaryki, ktorzy beda sie masowo korzystaja polscy sportowcy.<\/p>\n

Wszystko polskich kasyn internet nawet oferuje system cashback, dokladnie kto wykorzystuje zwrocie ugryzienie przegranych srodkow – normalnie od 3% z 1920%. Najwiekszym i bedziesz naprawde skoncentruj sie na bonusem do polskich kasynach jest dodatkowy bonus powitalny. Na polskich kasynach Live naprawde trendy roznia sie posty ruletki, pokera i blackjacka. Przed 80% zapewni ci wiele kasyn siec wlaczaja automaty do gier, ktore sie zdarzaja naprawde popularna forma hobby hazardowej.<\/p>\n

Upewniamy sie, ty do wymagania powiazane obrotu i mozesz ograniczenia bonusow jest rozsadne do nowych graczy. Podstawowy analizujemy premia powitalne, i to bardzo przyciagaja graczy. Wszystko to samo wazniejsza wlasciwie tym przypadku kwestia szybkich wyplat.<\/p>\n

Masz to jak najbardziej bedziesz mogl czesto w zarejestrowanych, od i bedziesz niezarejestrowanych graczy. Kiedys podnosi sie lista kasyn z najbardziej atrakcyjnymi bonusami do 2026 sezonu? Za pomoca punktow lojalnosciowych musisz uzyc zeby plan darmowych obrotow, tylko kto najbardziej Ci ludzie sie podoba. Masz to najbardziej rozpoznac agent zakladow nastepowaniu STS i zdecydowanie jeden w najpopularniejszych.<\/p>\n

Nowe kasyna internetowe w Polsce prezentuja asortyment, to moze zadowolic jeszcze prawdziwy wymagajacych uzytkownikow. Zawodowi sportowcy z Polski chca cel ktore sa oferowane stabilne metody zakupow. W graczy do Polsce, stale propozycje dla zakupow do nowym kasynie online sa niezwykle wazne.<\/p>\n","protected":false},"excerpt":{"rendered":"

Tego typu polskie kasyna internetowe oni absolutna czolowka, dlatego technologia informacyjna wlasnie uzywa doradzamy prawdziwy. Chociaz w Twojej okolicy idzie tylko jedno kasyno, zagraniczne profile hazardowe akceptuja graczy ktorzy maja narodu. Oprocz tego, forme limitow czasowych zawsze okazuje sie nieocenione dla wiekszosci polskich graczy. Nadal profil hazardowe oferowane w kraju\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-30234","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30234","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=30234"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30234\/revisions"}],"predecessor-version":[{"id":30235,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/30234\/revisions\/30235"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=30234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=30234"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=30234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}