/* 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":80958,"date":"2026-05-23T05:30:58","date_gmt":"2026-05-23T05:30:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=80958"},"modified":"2026-05-23T05:31:00","modified_gmt":"2026-05-23T05:31:00","slug":"kiedykolwiek-przy-wyborze-kasyno-musisz-rowniez-to-jaka-wyobrazam-sobie-w-poblizu-ma-faktycznie-zaangazowany-wzmocnienie","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kiedykolwiek-przy-wyborze-kasyno-musisz-rowniez-to-jaka-wyobrazam-sobie-w-poblizu-ma-faktycznie-zaangazowany-wzmocnienie\/","title":{"rendered":"Kiedykolwiek przy wyborze kasyno musisz rowniez to jaka wyobrazam sobie w poblizu ma faktycznie zaangazowany wzmocnienie"},"content":{"rendered":"

Wrazenie graczy i mozesz swiat<\/h2>\n

Scena coin strike hold and win maksymalna wygrana<\/a> kasyn online jest jak ogromny, jednego trudno moze byc posiadania nim nadazyc. Ane jest ekipa DobreKasyno “siedzimy” neuronauki kasyn jak lata i mozesz wiemy, i to kasyno to lokalnie niepoblazliwy otoczenie, w ktorym konto musi miec ludzie gracz idealny wygranych. Postawcie stad na dobre przedsiebiorstwa hazardowe, czyli jedno z tamtych, i to znajdziecie w naszej stronie, skuteczny gwarantujemy, ty do spelni ono wiekszosc z powyzsze wymagania.<\/p>\n

Dobre kasyna? Wszystkie nasze propozycje<\/h2>\n

Naprawde uznane kasyna ze swietna oferta. Wybierz 80 spinow posiadanie kodem FREEKASYNO na rejestracji i sprawdz tylko ile kluczowych korzysci z miec NV Casino.<\/p>\n

Fantastyczne przedsiebiorstwa hazardowe jak grupy Vulkan w ktorym czekaja spiny posiadanie aplikacji o. Nudne bonusy non-sticky i mozesz duzo szans na poprawa bankrolla!<\/p>\n

Popularne, unikalne kasyno ze swietnymi turniejami. Wplata jak jednosc euro lub po prostu dwadziescia dwa zlotych! Blyskawiczne wygrana. I setki spinow posiadania rejestracji.<\/p>\n

Nowe kasyno na tym samym silniku dokladnie co Ivibet, czyli wedlug rankingow topowe kasyno,. Nie wiecej wyborem Granawin. Wez 20 spinow!<\/p>\n

To niesamowite dobre kasyno jak Vulkan Vegas ktorzy maja masa swietnych bonusow. Ktore wahaja sie od piecdziesiat dolarow free spinow, skuteczny konczac na pakiecie powitalnym – 5000 PLN!<\/p>\n

Zamelduj sie z kodem FREEKAS50, i dlatego wypelnij widocznosc, udowodnij e-mail i rozmowa telefoniczna. Przyjecia zalogowaniu polegaj na haslo FREEKAS50 na l spinow.<\/p>\n

Zaloguj sie z kodem 50VINCI1, pokaz e-mail i wlacz darmowe spiny. Nowe kasyna od BetOnRed, ma na mysli to zabezpieczony zaawansowany.<\/p>\n

Czesto zadawane pytania i mozesz watpliwosci<\/h2>\n

Ludzie, ktorzy nigdy nie korzystaly ktorzy maja internetowych kasyn moga miec dane sprawy i bedziesz watpliwosci. Nie ma absolutnie nie wraz z zadnej niespodzianki, w ogole mowimy w sprawie bezpieczenstwie wplaconych pieniedzy, legalnosci kasyn jesli jak mozesz uczciwosci gier. Ze pyta nie bladzi, tak zrobic rozwiac wiekszosc z watpliwosci przygotowalismy dla Was kasynowy FAQ. Jak przywoluje wszystkie nasze rozpoznawac oraz obserwacja innych branzowych portali, bylo to normalnie pytane przez poczatkujacych graczy zapytania. Rzuccie okiem w ponizsze tematy, prawdopodobnie ktores tych nie jest dla Was oczywistoscia. A czy to nie jest to wystarczajaco mam dzielic, a tam znajdziecie wszystkie nasze przyczyny.<\/p>\n

Czy czy nie jest to mozliwe grac i bedziesz zdobywac w miejsce wplacania?<\/h4>\n

Np! Do tego sluza kasyno zamiast wplaty i mozesz dostarczone przez nie premia bez depozytu, stad znajdziecie na stronie internetowej glownej naszym portalu. Z tabeli mam w Was zebrane popularne, jak rowniez sprawdzone przedsiebiorstwa hazardowe, ktore zapewniaja motywacja kasynowy za rejestracji. Byli w stanie oni czuc sie free spiny lub motywacja bez depozytu. Dlatego odpowiadajac na sprawa \ufffd tak, mozesz zwyciestwa na kasynie zamiast wplacania wlasnych srodkow. Warte zachodu to jednak produkowac, wywoluje na depozytorow czekaja naprawde wysokie bonusy, ktore sa trzymac sie na ogromne zarobki. Na poczatku wszystko to samo warte kazdego grosza poczynic wysilek, zeby gre za darmowe premia kasynowe, ktorymi czesto probuje bezplatne spiny bez depozytu lub po prostu zachety na czesci srodkow na gre.<\/p>\n

Jesli fillip wyroznione oceniony to zachety zamiast wplaty?<\/h4>\n

Dokladnie w tym. W rankingu promocji zbieramy wyjasnia najnowsze premia bez depozytu, skuteczny dowolne wykorzystane w nim przedsiebiorstwa hazardowe oni bezplatne kasyna bez depozytu. Nie tylko wskazuje, ale jak mozesz biezacy. Nie musicie sie martwic, ze przegapicie okazje w free spiny za zostac czlonkiem. Zdecydowanie kasyno z darmowymi spinami oni jak mozesz fascynujace promocje jak wplaty, w ktorym posiadanie osobnik depozyt mozna dostac spora sumke z gre. Na ten temat piszemy z recenzjach, i to znajdziecie klikajac \ufffdOpinia kasyna\ufffd, lecz na stronie internetowej glownej i bedziesz rankingu skupiamy sie calkowicie na darmowych bonusach kasynowych. Uwzglednionych w tym dominuja bezplatne spiny posiadanie rejestracji, jakkolwiek sa takze zachety gotowkowe zbioru 25 PLN jak Spinbounty jesli czy nie przedsiebiorstwa hazardowe Slottica.<\/p>\n

Ile mozna zdobyc z kasynie?<\/h4>\n

Sky is jesli chodzi o limit! Kasyna online nie wlaczaja niczym w zwiazku z barowymi jednorekimi bandytami, w ktorym jackpoty wynosily po l PLN. Na kasynach i to promujemy zdobyc mozesz wszystko to samo kilkadziesiat niezliczonych euro. Jak, to po prostu nie blednosc plus nie klamstwo. Takie-jak wyplaty padaja dokladnie co miesiac kalendarzowy, czesciej natomiast jest to mozliwe zdobyc w tym. kilkaset wiele zlotych. Wybierzcie jedno (dobry znacznie lepiej par) posiadanie kasyn posiadanie naszej profil i mozesz sprawdzcie zakladke Jackpoty. Kwoty robia uczucie, dobry wyciaganie masz to, jednego poniewaz zgarniecia twoje wlasne oddziela tylko jedno przychylne zakrecenie, nawet najnizszej stawce. Technologia informacyjna mozesz byc Ty!<\/p>\n","protected":false},"excerpt":{"rendered":"

Wrazenie graczy i mozesz swiat Scena coin strike hold and win maksymalna wygrana kasyn online jest jak ogromny, jednego trudno moze byc posiadania nim nadazyc. Ane jest ekipa DobreKasyno “siedzimy” neuronauki kasyn jak lata i mozesz wiemy, i to kasyno to lokalnie niepoblazliwy otoczenie, w ktorym konto musi miec ludzie\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-80958","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80958","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=80958"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80958\/revisions"}],"predecessor-version":[{"id":80959,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/80958\/revisions\/80959"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=80958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=80958"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=80958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}