/* 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":141456,"date":"2026-06-12T08:49:57","date_gmt":"2026-06-12T08:49:57","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=141456"},"modified":"2026-06-12T08:49:57","modified_gmt":"2026-06-12T08:49:57","slug":"kasyno-liraspin-to-regulowana-i-godna-zaufania-platforma-z-atrakcyjnymi-nagrodami-w-polsce","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kasyno-liraspin-to-regulowana-i-godna-zaufania-platforma-z-atrakcyjnymi-nagrodami-w-polsce\/","title":{"rendered":"Kasyno Liraspin to Regulowana i Godna Zaufania Platforma z Atrakcyjnymi Nagrodami w Polsce"},"content":{"rendered":"
\n\"High<\/p>\n

Szukaj\u0105c kasyno online w Polsce, gracze szukaj\u0105 przede wszystkim pewno\u015bci, bezpiecze\u0144stwa i atrakcyjnej oferty. Liraspin Casino odpowiada na te wymagania, dzia\u0142aj\u0105c jako w pe\u0142ni licencjonowany serwis, kt\u00f3ry zdobywa pozytywne opinie. Dzi\u0119ki licencji przyznanej przez polskie w\u0142adze, kasyno gwarantuje uczciwe gry, ochron\u0119 danych i jasne zasady. Nie zapomina przy tym o grach \u2013 jego biblioteka gier jest bogata, a promocje obfite. To miks powoduje, \u017ce Liraspin buduje zadowalaj\u0105ce miejsce do gry dla polskich fan\u00f3w hazardu online.<\/p>\n

Rejestracja i Potwierdzenie Konta \u2013 Prosty Proces<\/h2>\n

Za\u0142o\u017cenie konta w Liraspin Casino jest przygotowane tak, by by\u0142o \u0142atwe dla gracza. Wymaga podania podstawowych danych, co jest norm\u0105 w licencjonowanym kasynie. Wa\u017cnym krokiem jest kolejna weryfikacja to\u017csamo\u015bci. To wymagany proces dla wszystkich licencjonowanych operator\u00f3w. Polega na dostarczeniu skan\u00f3w dokument\u00f3w, np. dowodu osobistego. Chroni konto gracza przed nielegalnym dost\u0119pem i pozwala kasynu zrealizowa\u0107 przepisy zwi\u0105zane z walk\u0105 praniu pieni\u0119dzy. Liraspin wykonuje weryfikacj\u0119 w spos\u00f3b nieskomplikowany, a obs\u0142uga s\u0142u\u017cy pomoc\u0105 w razie ewentualnych problem\u00f3w, aby gracz m\u00f3g\u0142 sprawnie wr\u00f3ci\u0107 do chronionej gry.<\/p>\n

Ochrona Transakcji i Ochrona Danych Osobowych<\/h2>\n

Liraspin Casino k\u0142adzie nacisk na kwestie ochrony finansowej i ochrony prywatno\u015bci klient\u00f3w https:\/\/liraspins.pl\/<\/a>. Wszystkie transakcje s\u0105 chronione szyfrowaniem SSL, kt\u00f3re blokuje wgl\u0105d w dane osobom postronnym. Platforma korzysta wy\u0142\u0105cznie z renomowanych dostawc\u00f3w p\u0142atno\u015bci, zapewniaj\u0105c Polakom znane i dogodne opcje. Kasyno stosuje si\u0119 r\u00f3wnie\u017c do przepis\u00f3w RODO. Dane graczy s\u0105 przetwarzane tylko w wymaganym celu i nie przedostaj\u0105 si\u0119 w obce r\u0119ce. Dzia\u0142anie tych zabezpiecze\u0144 weryfikuj\u0105 regularne audyty zewn\u0119trzne.<\/p>\n

Dlaczego Licencja i Regulacje Stanowi\u0105 Kluczowe dla Graczy w Polsce?<\/h2>\n

Aktywno\u015b\u0107 na polskim rynku hazardowym obwarowana jest \u015bcis\u0142ymi przepisami. Liraspin Casino posiada licencj\u0119 Ministerstwa Finans\u00f3w, co zalegalizowuje jego funkcjonowanie w naszym kraju. Taka licencja to nie tylko formalno\u015b\u0107. Gwarantuje, \u017ce kasyno podlega sta\u0142ej kontroli pa\u0144stwa \u2013 od losowo\u015bci gier, przez bezpiecze\u0144stwo p\u0142atno\u015bci, po procedury wyp\u0142at. Gracz otrzymuje pewno\u015b\u0107, \u017ce jego pieni\u0105dze s\u0105 chronione, a rozgrywka jest rzetelna i zgodna z prawem. To fundament zaufania. Operator ma te\u017c powinno\u015b\u0107 p\u0142acenia podatku od gier do polskiego bud\u017cetu, co dodatkowo potwierdza jego legalny status.<\/p>\n

Pomoc Klienta w J\u0119zyku Polskim<\/h2>\n

Solidna obs\u0142uga klienta to dodatkowy filar zaufania. Liraspin Casino gwarantuje wsparcie w j\u0119zyku polskim, g\u0142\u00f3wnie przez czat na \u017cywo i poczt\u0119 elektroniczn\u0105. Zesp\u00f3\u0142 zosta\u0142 przeszkolony, by rozwiewa\u0107 w\u0105tpliwo\u015bci i problemy techniczne sprawnie i fachowo. Szansa kontaktu w rodzimym j\u0119zyku eliminuje bariery i zapewnia graczom komfort. To istotne szczeg\u00f3lnie w pilnych sprawach dotycz\u0105cych konta czy transakcj\u0105. Godziny dzia\u0142ania czatu zosta\u0142y dopasowane do polskich graczy, a pomoc wielokrotnie dost\u0119pna jest tak\u017ce w weekendy.<\/p>\n

Bonus startowy i Cykliczne oferty dla Graczy z Polski<\/h2>\n

\u015awie\u017co zarejestrowani z Polski mog\u0105 liczy\u0107 na korzystny zestaw startowy. W jego sk\u0142ad wchodzi on bonus od pierwszego depozytu oraz bezp\u0142atne obroty. Liraspin Casino pami\u0119ta te\u017c o sta\u0142ych klientach, tworz\u0105c dla nich regularne akcje, zawody z nagrodami czy opcje cashback. Ka\u017cda premia maj\u0105 przejrzyste wymogi obrotu (tzw. wager), kt\u00f3re s\u0105 przejrzyste i mieszcz\u0105 si\u0119 w bran\u017cowych standardach. To aspekt, kt\u00f3ry zach\u0119ca u\u017cytkownik\u00f3w do tej platformy. Szczeg\u00f3\u0142y promocji si\u0119 aktualizuj\u0105, ale ich zamierzenie jest niezmienne: da\u0107 graczowi realne zyski, nie trac\u0105c przy okazji z uczciwo\u015bci.<\/p>\n