/* 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":156503,"date":"2026-06-15T07:05:43","date_gmt":"2026-06-15T07:05:43","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=156503"},"modified":"2026-06-15T07:05:43","modified_gmt":"2026-06-15T07:05:43","slug":"kde-je-kazdy-hrac-vyhercem-v-cesku-se-spinoloco-casino","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kde-je-kazdy-hrac-vyhercem-v-cesku-se-spinoloco-casino\/","title":{"rendered":"Kde je ka\u017ed\u00fd hr\u00e1\u010d v\u00fdhercem v \u010cesku se Spinoloco Casino"},"content":{"rendered":"
\n\"Bonos<\/p>\n

\u010cesk\u00fd hern\u00ed trh je jedn\u00edm z nejaktivn\u011bj\u0161\u00edch a nejn\u00e1ro\u010dn\u011bj\u0161\u00edch v Evrop\u011b. Hr\u00e1\u010di zde vy\u017eaduj\u00ed nejen \u0161pi\u010dkovou z\u00e1bavu, ale tak\u00e9 spravedliv\u00e9 podm\u00ednky, chr\u00e1n\u011bn\u00e9 prost\u0159ed\u00ed a hodnotn\u00e9 odm\u011bny. Spinoloco Casino se um\u00edstilo do \u010dela tohoto trendu s viz\u00ed, kter\u00e1 p\u0159ekra\u010duje pouh\u00e9ho zprost\u0159edkov\u00e1n\u00ed hazardn\u00edch her. Na\u0161\u00edm c\u00edlem je zalo\u017eit spole\u010denstv\u00ed, kde se ka\u017ed\u00fd, bez ohledu na sv\u016fj hern\u00ed styl nebo znalosti, m\u016f\u017ee c\u00edtit jako v\u00edt\u011bz. Tento pocit v\u00fdhry nevych\u00e1z\u00ed pouze z velk\u00fdch v\u00fdher, ale z celkov\u00e9 spokojenosti s hern\u00edm pro\u017eitkem \u2013 od okam\u017eiku registrace p\u0159es plynul\u00fd pr\u016fb\u011bh hry a\u017e po bezpe\u010dn\u00e9 v\u00fdb\u011bry. V dal\u0161\u00edm \u010dl\u00e1nku v\u00e1m nab\u00eddneme sedm kl\u00ed\u010dov\u00fdch oblast\u00ed, ve kter\u00fdch Spinoloco Casino sna\u017e\u00ed o to, aby tato koncepce byla skute\u010dnost\u00ed pro v\u0161echny hr\u00e1\u010de v \u010cR. Zam\u011b\u0159en\u00ed v\u011bnujeme na otev\u0159enost, zodpov\u011bdnost a inovace, kter\u00e9 ct\u00ed m\u00edstn\u00ed legislativu a pot\u0159eby \u010desk\u00fdch klient\u016f.<\/p>\n

V\u00edtejte v \u010desk\u00e9m kasinu, co rozum\u00ed va\u0161im pot\u0159eb\u00e1m<\/h2>\n

Spinoloco Casino nebylo vytvo\u0159eno v izolaci od lok\u00e1ln\u00edch specifik. Na druhou stranu, od sam\u00e9ho po\u010d\u00e1tku jsme se zam\u011b\u0159ili na hlubok\u00e9 pochopen\u00ed \u010desk\u00e9ho hr\u00e1\u010de, jeho preferenc\u00ed a o\u010dek\u00e1v\u00e1n\u00ed. To se odr\u00e1\u017e\u00ed v jak\u00e9mkoli aspektu na\u0161\u00ed slu\u017eby. Jazykov\u00e1 lokalizace je standardem \u2013 ve\u0161ker\u00e9 rozhran\u00ed, podpora i hern\u00ed obsah jsou k dispozici v \u010de\u0161tin\u011b, co\u017e ru\u0161\u00ed ve\u0161ker\u00e9 bari\u00e9ry v komunikaci a poskytuje absolutn\u011b jasn\u00e9 pochopen\u00ed pravidel a podm\u00ednek. Nav\u00edc pln\u011b dodr\u017eujeme \u010deskou legislativu, jsme opr\u00e1vn\u011bni a regulov\u00e1ni odpov\u00eddaj\u00edc\u00edmi org\u00e1ny, co\u017e na\u0161im hr\u00e1\u010d\u016fm zaru\u010duje z\u00e1konnou ochranu a poctiv\u00e9 jedn\u00e1n\u00ed. Rozum\u00edme tak\u00e9 v\u00e1hu m\u00edstn\u00edch platebn\u00edch metod, a proto jsme integrovali varianty, jako jsou \u010desk\u00e9 bankovn\u00ed p\u0159evody \u010di zn\u00e1m\u00e9 online platby, kter\u00e9 jsou pro na\u0161e publikum samoz\u0159ejm\u00e9 a bezpe\u010dn\u00e9. Tento d\u016fraz na lokalitu formuje z\u00e1klad d\u016fv\u011bry, na n\u011bm\u017e zakl\u00e1d\u00e1me n\u00e1\u0161 vztah s komunitou.<\/p>\n

Rozs\u00e1hl\u00e1 hern\u00ed paleta her, kter\u00e1 uspokoj\u00ed nov\u00e1\u010dky i ost\u0159\u00edlen\u00e9 hr\u00e1\u010de<\/h2>\n

Z\u00e1kladem ka\u017ed\u00e9ho online kasina je jeho hern\u00ed portfolio. Ve Spinoloco Casino jsme si uv\u011bdomujeme pestrosti vkusu \u010desk\u00fdch hr\u00e1\u010d\u016f, a proto spojujeme s\u00edly s \u0161pi\u010dkov\u00fdmi sv\u011btov\u00fdmi v\u00fdvoj\u00e1\u0159i, abychom mohli poskytnout skute\u010dn\u011b ucelenou kolekci. Na\u0161e sortiment zahrnuje stovky pr\u00e9miov\u00fdch slot\u016f od spole\u010dnost\u00ed jako NetEnt, Pragmatic Play nebo Play’n GO, v\u010detn\u011b i popul\u00e1rn\u00edch titul\u016f s \u010deskou tematikou nebo region\u00e1ln\u00edmi jackpoty. Pro milovn\u00edky klasiky m\u00e1me \u0161irokou sekci stoln\u00edch her, kde naleznete mnoho druh\u016f rulety, blackjacku a pokeru. \u017div\u00e9 kasino pak p\u0159en\u00e1\u0161\u00ed autentickou atmosf\u00e9ru p\u0159\u00edmo na va\u0161i obrazovku prost\u0159ednictv\u00edm kvalifikovan\u00fdch dealer\u016f v re\u00e1ln\u00e9m \u010dase. D\u00e1v\u00e1me p\u0159itom d\u016fraz na pr\u016fhlednost a spravedlnost v\u0161ech her \u2013 pou\u017e\u00edv\u00e1me prov\u011b\u0159en\u00e9 gener\u00e1tory n\u00e1hodn\u00fdch \u010d\u00edsel (RNG), co\u017e zaji\u0161\u0165uje naprosto spravedliv\u00e9 v\u00fdsledky ka\u017ed\u00e9ho spinu nebo rozd\u00e1n\u00ed karet.<\/p>\n