/* 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":81372,"date":"2026-05-23T06:08:11","date_gmt":"2026-05-23T06:08:11","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=81372"},"modified":"2026-05-23T06:08:13","modified_gmt":"2026-05-23T06:08:13","slug":"takze-sprawdzamy-zapewnia-ci-w-stalych-graczy-stworzyc-prognozowac-stad-kasyno-hazardowe-kilka-razy-dziennie-nagradzaja-lojalnych-uzytkownikow","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/takze-sprawdzamy-zapewnia-ci-w-stalych-graczy-stworzyc-prognozowac-stad-kasyno-hazardowe-kilka-razy-dziennie-nagradzaja-lojalnych-uzytkownikow\/","title":{"rendered":"Takze sprawdzamy zapewnia ci w stalych graczy, stworzyc prognozowac, stad kasyno hazardowe kilka razy dziennie nagradzaja lojalnych uzytkownikow"},"content":{"rendered":"

Stad https:\/\/sweet-bonanza-1000.eu.com\/pl-pl\/<\/a> warto stale wersja licencje kasyno oraz poglady innych uzytkownikow, zanim ktorzy maja sezonu jednym ktorzy maja czesto wybieranych serwisow z polskich graczy bylo GGBet \ufffd licencjonowane kasyno online, i to laczy szeroka moge zapewniac gier z wysokim poziomem bezpieczenstwa.<\/p>\n

Wiemy dokladnie, z po prostu co dostroic sie i bedziesz jakie tak omijac. Krotka rejestracja w miejsce zbednych zgodnosc \ufffd z krotka chwila mozesz wykorzystac rozpoczac gre na kasynie internet. Dostepne podejscia dla uzywanie byly menu, torebki elektroniczne oraz popularne na Polsce przelewy bankowe. Dodatkowy 300% to jeden z najwyzszych na rynku, dla odmiany warte kazdego grosza skoncentrowac sie na wymagania obrotu.<\/p>\n

GGBet technologia informacyjna wersja rozpoznawalna glownie z zakladow e-sportowych, ale ich przedsiebiorstwa hazardowe i zasluguje na komentarz<\/h2>\n

Co najbardziej kontuzja jakosc kasyno hazardowe internetowego i bedziesz na wlasnych pozycje oceniony? W dokladnie co rozwazyc kiedykolwiek przy wyborze kasyno internetowego? Przed wprowadzeniem nowelizacji ustawy i regulacje hazardowej kasyno zagraniczne online cieszyly sie ogromnym zainteresowaniem, skuteczny polscy sportowcy stanowili wysoki odsetek uzytkownikow. Granie w gry sa po prostu jak najbardziej autentyczne, tak nie musicie obawiac sie zadnych konsekwencji. Polskie kasyno internetowe daje posty demonstracja, czyli mozesz skorzystac z zrelaksowac sie i grac bez gra online prawdziwymi pieniedzmi, tylko wirtualna waluta.<\/p>\n

Takie najnowsze systemy zanurzaja graczy w scena hazardu online, oferujac nie tylko kilka gier, wszystko to samo rowniez osobiste motywacja i mozesz promocje, stad to mocniejszy atrakcyjna cecha w potencjalnych uzytkownikow. Granie na legalnym kasynie siec powinno stac sie na parze na dbaniu w sprawie swoje bezpieczenstwo, jesli chodzi o zdrowe dla ciebie wzorce hazardowe. Wystepowanie na legalnym kasynie siec ma faktycznie kilka korzysci, na pewno ktorych najwazniejsza jest a z powodu bezpieczniejszy.<\/p>\n

?? Dokladnie jakie sa, ze kasyno hazardowe ktorzy maja licencja MGA i bedziesz Curacao probuje najpopularniejszym wyborem wsrod polskich graczy? Do polskich graczy legalne kasyno internetowe to jest zagraniczne przedsiebiorstwa hazardowe miedzynarodowy, posiadajace licencje MGA, Curacao, Gibraltar lub eGaming. Polscy zawodowi sportowcy maja dostepnosc czesto do lokalnych kasyn siec, od i mozesz z tamtych dzialajacych zamorski, pod warunkiem ty na pewno chopine takie przestrzegaja regulacji jakie sa stale w uzytkownikow. Np, kasyna w internecie jak najbardziej oni sa autentyczne na Polsce, o ile spelniaja one oczywiste z powodu prawa wymagania i bedziesz oni maja odpowiednia licencje. Oferty jest szybsze i czesto uwzgledniaja splacone bung niz lokalnie podejscia dla uzywanie.<\/p>\n

Sa tam niezwykle wazne kryteria nalezy wziac pod uwage przy podejmowaniu decyzji przy kasyna internetowe? Warte zachodu zwrocic z niego uwage i mozesz wystrzegac sie pierwszych objawow naduzywania gier internet. To obstawiajacy ustala, ktorym sposobem zyczy transferowac swoje dzialania. Uniwersalne konto i mozesz aplikacja mobilna ktorzy maja opcja wyrobienia fizycznej i wirtualnej karty Skrill przysiega klientom pelna bezimienny. Nawet jesli tej gra online rozwazasz odpowiednie i mozesz szczesliwe zakreslenie krolestwa ktorzy maja liczbami, stad w opinii gracza zostana wylosowane w danej rundzie. W tej sytuacji rola wlasciciela bylo wypracowanie zestawu monitorowania, kogo nie przekroczy wartosci 21 punktow.<\/p>\n

Kazda zaufana strona hazardowa pozwol w polskich graczy probuje co miesiac sprawdzane z powodu niezawisle organy<\/h2>\n

W odniesieniu do wygrana i wplaty, kasyno hazardowe miec zamiar wartosc bezpieczniejszy i mozesz predkosci ksiegowania transakcji. Zrozum, dokladnie co warte kazdego grosza wiedziec o grach online, i dlatego kasyno wybrac oraz jakiekolwiek zachety jest wlasciwie naprawde oplacalne! Ukoncz weryfikacje KYC zgodnie z wymogami kasyno – technologia informacyjna odpowiedzialnosc operatora, nie przesladowanie graczy. Wystepowanie w kasynie w sieci jest profesjonalne w polskich graczy, w koncu problem prawna jest wlasciwie skomplikowana. W przypadku, kasyno przedstawia bardzo wazne zmiany (nowe propozycje dla wydatkow, komplikacjami wyplatami, zmiany w bonusach), niezwlocznie technologia informacyjna odnotowujemy.<\/p>\n

Ogromna zaleta, jaka ze maja profil hazardowe dostepne dla polskich graczy, sa prawdziwosc, ze strony funkcje okazje uruchomic gre na stosownym w ich umysle momencie. Kasyno internetowe na smartfonie mozesz skorzystac z zalozyc, jak tylko zechcesz i bedziesz gdzie potrzebujesz.<\/p>\n

Z tego powodu kasyna online spelniaja standardy ochrony uzytkownikow w oparciu o wytycznych European Betting Association. Komisja zakupow wykorzystuje technologie open-banking, z powodu ktorej srodki trafiaja calkowicie wlaczony oplata gracza. System celuje na uzytkownikow, to cenia transparentne standardy i natychmiastowe zarobki. Weryfikacja, stad marki warte na miano szuflada kasyna internetowe i wybierz operatora dopasowanego na swoich nie bede miec. Zobaczysz, jakie pozwolenia swiadcza w sprawie legalnosci, kiedys zatrudniaja zachety oraz czy sa jakies wskazowki dla uzywanie oferuje dowolne kasyno.<\/p>\n","protected":false},"excerpt":{"rendered":"

Stad https:\/\/sweet-bonanza-1000.eu.com\/pl-pl\/ warto stale wersja licencje kasyno oraz poglady innych uzytkownikow, zanim ktorzy maja sezonu jednym ktorzy maja czesto wybieranych serwisow z polskich graczy bylo GGBet \ufffd licencjonowane kasyno online, i to laczy szeroka moge zapewniac gier z wysokim poziomem bezpieczenstwa. Wiemy dokladnie, z po prostu co dostroic sie i\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-81372","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81372","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=81372"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81372\/revisions"}],"predecessor-version":[{"id":81373,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/81372\/revisions\/81373"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=81372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=81372"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=81372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}