/* 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":142831,"date":"2026-06-12T10:12:57","date_gmt":"2026-06-12T10:12:57","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=142831"},"modified":"2026-06-12T10:12:57","modified_gmt":"2026-06-12T10:12:57","slug":"vulkan-vegas-casino-niezawodna-i-udana-gra-w-polsce","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/vulkan-vegas-casino-niezawodna-i-udana-gra-w-polsce\/","title":{"rendered":"Vulkan Vegas Casino \u2013 Niezawodna i Udana Gra w Polsce"},"content":{"rendered":"
Polscy gracze online wybieraj\u0105 platformy, gdzie maj\u0105 mo\u017cliwo\u015b\u0107 pozostawa\u0107 bezpiecznie i posiada\u0107 pewno\u015b\u0107, \u017ce swoja zabawa jest w sprawdzonych d\u0142oniach https:\/\/vulkanvegas-casino.org.pl\/<\/a>. Vulkan Vegas Casino od lat wype\u0142nia te potrzeby. \u0141\u0105czy silne ochron\u0119 z wielk\u0105 bibliotek\u0105 gier od topowych dostawc\u00f3w i korzystnymi promocjami. W rezultacie tak osoby zaczynaj\u0105ce przygod\u0119 z hazardem online, jak i weterani mog\u0105 tu znale\u017a\u0107 co\u015b. W dalszej cz\u0119\u015bci przeanalizujemy, co dok\u0142adnie decyduje, \u017ce Vulkan Vegas to popularny i rekomendowany adres dla u\u017cytkownik\u00f3w z Polski, koncentruj\u0105c si\u0119 na ochronie, niezawodno\u015bci i korzy\u015bciach dla gracza.<\/p>\n Na polskim rynku wa\u017cne jest wsparcie dla rodzimych, dogodnych metod p\u0142atno\u015bci. Vulkan Vegas znakomicie o tym wie. Zapewnia depozyty i wyp\u0142aty przez szybkie przelewy online (np. Przelewy24, Paybylink), popularne portfele elektroniczne (Skrill, Neteller), karty p\u0142atnicze oraz kryptowaluty. Wp\u0142aty realizowane s\u0105 prawie natychmiast, wi\u0119c gr\u0119 mo\u017cesz rozpocz\u0105\u0107 od razu. Czas wyp\u0142aty wygranych jest uzale\u017cniony od konkretnej metody i zwykle znajduje si\u0119 w przedziale od kilku godzin do kilku dni roboczych. Kasino wykorzystuje typowe procedury weryfikacji to\u017csamo\u015bci (KYC), kt\u00f3re s\u0105 popularne w bran\u017cy i s\u0142u\u017c\u0105 zabezpieczeniu transakcji.<\/p>\n Wszystkie potrzebne informacje \u2013 minimalne i maksymalne kwoty transakcji, mo\u017cliwe op\u0142aty oraz orientacyjny czas wyp\u0142at \u2013 s\u0105 wyra\u017anie podane w sekcji p\u0142atno\u015bci na stronie. Vulkan Vegas oferuje limity konkurencyjne i przejrzyste dla graczy. Taka transparentno\u015b\u0107 usuwa niepotrzebne nieporozumienia i wzmacnia zaufanie. Gracze precyzyjnie s\u0105 \u015bwiadomi, czego mog\u0105 si\u0119 spodziewa\u0107 na ka\u017cdym etapie procesu finansowego.<\/p>\n Vulkan Vegas znane jest z obfitego nagradzania r\u00f3wnie\u017c pocz\u0105tkuj\u0105cych, jak i regularnych bywalc\u00f3w. Powitalny pakiet bonusowy rozdzielony jest na wiele pierwszych wp\u0142at, co pozwala istotnie powi\u0119kszy\u0107 wyj\u015bciowy kapita\u0142. Co istotne, kasino cz\u0119sto odnawia swoj\u0105 propozycj\u0119 promocyjn\u0105. S\u0105 turnieje z atrakcyjnymi pulami nagr\u00f3d, bonusy \u015bwi\u0105teczne, oferty bezp\u0142atnych spin\u00f3w na \u015bwie\u017ce sloty oraz programy odzysku cz\u0119\u015bci strat (cashback). Wszystkie promocje s\u0105 wyra\u017anie opisane, a warunki obrotu (wymagania wagerowe<\/a>) podane w przejrzysty spos\u00f3b. To oznaka uczciwo\u015bci operatora wobec klient\u00f3w.<\/p>\n Dla najsilniej zaanga\u017cowanych graczy Vulkan Vegas stworzy\u0142 wieloetapowy program lojalno\u015bciowy. Zbierasz punkty za prawdziwe zak\u0142ady, a one otwieraj\u0105 drog\u0119 do dalszych poziom\u00f3w. Ka\u017cdy nast\u0119pny poziom daje korzystniejsze korzy\u015bci \u2013 wi\u0119ksze limity wyp\u0142at, premie finansowe, a nawet upominek od osobistego hosta. Ten system gwarantuje, \u017ce d\u0142ugoterminowa wsp\u00f3\u0142praca z kasynem jest korzystna. Gracz bywa ceniony i traktowany w spos\u00f3b spersonalizowany.<\/p>\n Gramy niejednokrotnie w trasie, dlatego opcja gry na smartfonie jest dzi\u015b wymogiem. Vulkan Vegas udost\u0119pnia w w 100% responsywn\u0105 wersj\u0119 strony internetowej, kt\u00f3ra samoczynnie przystosowuje si\u0119 do ekranu twojego urz\u0105dzenia. Zachowuje przy tym kompletn\u0105 funkcjonalno\u015b\u0107 i \u015bwietnie zoptymalizowan\u0105 pr\u0119dko\u015b\u0107 dzia\u0142ania. Dla graczy preferuj\u0105cych aplikacje, kasino daje program do pobrania na urz\u0105dzenia z systemem Android. Interfejs mobilny jest przejrzysty, nawigacja \u0142atwa, a kompletna oferta gier, metody p\u0142atno\u015bci i kontakt z supportem mieszcz\u0105 si\u0119 w kieszeni.<\/p>\n Bez wzgl\u0119du od tego, czy grasz na nowoczesnym smartfonie, tablecie czy laptopie, platforma Vulkan Vegas pracuje p\u0142ynnie. Jako\u015b\u0107 graficzna gier, zw\u0142aszcza tych od czo\u0142owych dostawc\u00f3w, bywa znakomita nawet na mniejszych ekranach. Wygoda dokonywania transakcji czy rozmowy z konsultantem bez potrzeby uruchamiania komputera powoduje, \u017ce gra mobilna jest nie tylko przyjemna, ale nieraz bywa g\u0142\u00f3wnym sposobem korzystania z kasyna.<\/p>\n G\u0142\u00f3wnym atutem Vulkan Vegas jest swoja biblioteka gier. Kasino kooperuje z najlepszymi \u015bwiatowych dostawc\u00f3w oprogramowania, takich jak NetEnt, Play\u2019n GO, Pragmatic Play, Evolution Gaming czy Quickspin. Dlatego gracze mog\u0105 korzysta\u0107 do tysi\u0119cy tytu\u0142\u00f3w. W kolekcji znajduje si\u0119 setki slot\u00f3w o zr\u00f3\u017cnicowanej tematyce i mechanice, klasyczne gry sto\u0142owe jak blackjack czy ruletka w wielu wariantach, a tak\u017ce popularne gry wideo-poker. Ka\u017cda z produkcji charakteryzuje si\u0119 wysok\u0105 jako\u015bci\u0105 grafiki i d\u017awi\u0119ku, co wsp\u00f3lnie tworzy wci\u0105gaj\u0105ce doznania.<\/p>\n Prawdziw\u0105 per\u0142\u0105 w koronie jest sekcja gier na \u017cywo z krupierami. Transmisje prowadzone s\u0105 z profesjonalnych studi\u00f3w, a dostawcy jak Evolution Gaming gwarantuj\u0105 autentyczne do\u015bwiadczenie kasyna naziemnego. Opr\u00f3cz standardowych sto\u0142\u00f3w do ruletki czy blackjacka, odnajdziesz tu innowacyjne gry show, takie jak \u201eMonopoly Live\u201d czy \u201eDream Catcher\u201d. Vulkan Vegas ma te\u017c osobne dzia\u0142y z grami typu \u201eKup Bonus\u201d oraz z automatami, kt\u00f3re w Polsce osi\u0105gn\u0119\u0142y status kultowych. To zaspokaja bardzo r\u00f3\u017cne gusta graczy.<\/p>\nMetody P\u0142atno\u015bci i Wyp\u0142aty<\/h2>\n
Transparentno\u015b\u0107 Proces\u00f3w i Limity<\/h3>\n
Bonusy i Bonusy dla Rodzimych Graczy<\/h2>\n
Plan Lojalno\u015bciowy i Sta\u0142e Nagrody<\/h3>\n
Mobilne Do\u015bwiadczenie i Aplikacja<\/h2>\n
Funkcjonalno\u015b\u0107 i Stabilno\u015b\u0107 na Wielu Urz\u0105dzeniach<\/h3>\n
Oferta Gier i System<\/h2>\n
Gry Live i Wydzielone Kategorie<\/h3>\n
Niezawodno\u015b\u0107 i Obs\u0142uga Klienta<\/h2>\n