/* 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":81484,"date":"2026-05-23T06:14:25","date_gmt":"2026-05-23T06:14:25","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81484"},"modified":"2026-05-23T06:14:26","modified_gmt":"2026-05-23T06:14:26","slug":"a-kasyno-ktore-zyczy-sobie-stac-sie-powaznym-graczem-na-rynku-powinno-zapewnia-wersje-mobilna","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/a-kasyno-ktore-zyczy-sobie-stac-sie-powaznym-graczem-na-rynku-powinno-zapewnia-wersje-mobilna\/","title":{"rendered":"A kasyno, ktore zyczy sobie stac sie powaznym graczem na rynku, powinno zapewnia wersje mobilna"},"content":{"rendered":"

Bruno kasyno online Wolf Gold<\/a> doskonale zdaje sobie z tego sprawe, z powodu czemu przedsiebiorstwa hazardowe jest wlasciwie ktore sa oferowane z telefonach i mozesz tabletach, bardzo podobnie na urzadzeniach stacjonarnych. Gra wideo wedrowanie Bruno atrakcyjne do wiele systemach operacyjnych, takich jak Mechanik i mozesz ios firmy Apple, z powodu nowoczesnej konstrukcji wykorzystujacej technologie HTML5. Wysoka jakosc gier i bedziesz ogolna mozliwosci przedsiebiorstwa hazardowe niczym nie odbiegaja jak forma stacjonarnej.<\/p>\n

Bruno Casino UX \ufffd User Experience<\/h2>\n

Kasyno od razu wyglada bardzo dobrze. Wszystkie nasze doswidczenie uzytkowanika jest naprawde zalety. Modele z terminologia polski jest wlasciwie na najwyzszym poziomie, temat jest naprawde przejrzysta i latwo zobaczyc w jej imieniu wszystko. Oczywiscie depozytu kasyno podobny w sprawie rozwiazania osiagniecia bonusow, kabel polaczeniowy gracza szczegoly przez proces wplaty, w drodze czemu calosc jest bardzo intuicyjna. Ogromna zaleta kasyno bylo opcja wyprobowania niemal wszystko tytulu do wersji obecna, gdzie mozna grac 100% za darmo, bezpieczny utraty prawdziwych pieniedzy. Z tego powodu sportowcy byli w stanie sprawdzic gry bez zadnych kosztow, doskonaly w dowolnym momencie gry nam sie spodoba, istnieje opcja przez dodanie jej na ulubione \ufffdulubione\ufffd. Obsluga klienta odpowiedzialny szybko i mozesz sprawnie do wszystkie pytania to bedzie dostepna 24\/7, po prostu co zdarza sie stosunkowo ledwo.<\/p>\n

Minusem kasyno znajdziesz niedobor zapewnia ci VIP, kto dotyka naprawde graczy, ktorzy gotowi bylo wplacac wysokie kwota. Niestety tutaj nie ma wybor otrzymania osobistego menadzera profil, czy czy nie specjalnych bonusow.<\/p>\n

Licencja<\/h2>\n

Bruno Casino zarzadzane byl Dux Group Polnoc.Wirtualny asystent. zlokalizowanym w Curacao. Licencje kasyna uzyskalo jak Kahnawake Gaming Comission to jest przez nie regulowane. Numer licencji technologia informacyjna 00872.<\/p>\n

Bruno Casino- Uczciwosc operatora<\/h2>\n

Bruno ma licencje wydana przez Kahnwake Gamin Comission. Kasyno online zatrudnia wlasciwie ktorzy maja najnowszej technologii szyfrowania, aby chronic informacje bedace danymi osobowymi swoich graczy. Twoje certyfikacja SSL przyszedl labedz i wymeczony z niezalezna strone trzecia.<\/p>\n

Wiecej kasyno Bruno produkuje kontroluje zaryzykowanie i mozesz alarmuje przed ryzykiem zwiazanym z hazardu. Ich strona internetowa online wyraznie wymienia srodki, ktore ludzie mogli podjac, gdy produkty wymkna sie spod kontrolera. Metody na przyklad funkcje limitow opierania sie na czas sesji, straty lub moze wlasnie granie, razem z rozwiazania samowykluczenia.<\/p>\n

Bezpieczny gier na Bruno Casino<\/h2>\n

Bezpieczniejszy to stopa kazdej dobrej szczescia na kasynie online, a w Bruno Casino ten aspekt zarzadzany sa priorytetowo. Dux Group, kierowca kasyno hazardowe, placi technologia informacyjna, stworzony, aby ludzie hazardzisci mogl miec stac sie mocno podczas gry \ufffd zarowno zgodnie ochrony danych osobowych, jak i bedziesz bezpieczenstwa srodkow finansowych. Z powodu aktualnym technologiom szyfrowania, Twoje badanie probuje chronione na kazdym etapie korzystania z serwisu.<\/p>\n

Na Bruno Casino naprawde masz poczucie wlasnej wartosci, ty do kazda obstawianie jest uczciwa i bedziesz przejrzysta. Kasyno wspolpracuje calkowicie z renomowanymi dostawcami oprogramowania, takimi jak Pragmatic Play, co twierdzi, ze wiekszosc ktore sa dostepne gry spelniaja najwyzsze standard branzowe. Kochanie stala daje ci sprawiaja, ty na pewno zawodowi sportowcy pochodza z dostepnosc z najnowszych i bedziesz prawdziwy popularnych tytulow, dobry kazda konfrontacja wystepuje na sprawdzonych, certyfikowanych automatach i stolach.<\/p>\n

W Bruno Casino bardzo kluczowa jest dodatkowo obowiazek wobec graczy. Kasyna rowniez oferuje szereg narzedzi wspierajacych bezpieczna gre \ufffd mozesz skorzystac z ustawic ograniczenia wplat, czasowe limity obstawianie czy czy nie skorzystac z wybor samowykluczenia. Takze, w razie potrzeby, ktore sa dostepne jest wlasciwie wsparcie specjalistow oraz obsluga organizacjami pomagajacymi osobom posiadanie problemami hazardowymi.<\/p>\n

Podsumowujac, bezpieczny gier na Bruno Casino wytrzymuje w naprawde wysokim poziomie. Poprzez licencji z Curacao, wspolpracy posiadanie najlepszymi dostawcami gier oraz z tym rozwiazaniom technologicznym, mozesz skupic sie na rozbawianiu, majac pewnosc siebie, jednego Ich analiza i bedziesz srodki mam pelni chronione. Jesli szukasz kasyna w internecie, i to stawia bezpieczniejszy graczy przewodnik, Bruno Casino to zdecydowanie najlepszy wybor.<\/p>\n

Obsluga klienta<\/h2>\n

Zawodowi sportowcy mogli skontaktowac sie z zespolem Bruno na wiele sposobow. Pierwszym z tych bylo mozliwosc wyslania materialy tekstowe tokoferol-mail na bezposredni [email protected]. Takze kasyna podaje numer telefonu, z kogo sportowcy mogli nawiazac kontakt z ( +43800070855 ) oraz czat nienagrane, ktorego obraz widoczna jest w prawym dolnym rogu ekranu. Najbardziej jest fakt, ze obsluga klienta pomoc bylo 24\/siodmy, z powodu czemu sportowcy mogli przedstawic sie ktorzy maja pytaniami gdziekolwiek dnia i mozesz co noc.<\/p>\n","protected":false},"excerpt":{"rendered":"

Bruno kasyno online Wolf Gold doskonale zdaje sobie z tego sprawe, z powodu czemu przedsiebiorstwa hazardowe jest wlasciwie ktore sa oferowane z telefonach i mozesz tabletach, bardzo podobnie na urzadzeniach stacjonarnych. Gra wideo wedrowanie Bruno atrakcyjne do wiele systemach operacyjnych, takich jak Mechanik i mozesz ios firmy Apple, z powodu\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-81484","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81484","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=81484"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81484\/revisions"}],"predecessor-version":[{"id":81485,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81484\/revisions\/81485"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81484"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}