/* 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":154764,"date":"2026-06-15T03:54:26","date_gmt":"2026-06-15T03:54:26","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=154764"},"modified":"2026-06-15T03:54:26","modified_gmt":"2026-06-15T03:54:26","slug":"trygghet-foerst-aer-lotto-casino-saekert-nog-foer-svenska-spelare","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/trygghet-foerst-aer-lotto-casino-saekert-nog-foer-svenska-spelare\/","title":{"rendered":"Trygghet F\u00f6rst: \u00c4r Lotto Casino S\u00e4kert Nog f\u00f6r Svenska Spelare?"},"content":{"rendered":"
\n\"Lotto<\/p>\n

F\u00f6r svenska spelare \u00e4r skyddet aldrig n\u00e5got man bara antar lottocasinoo.com<\/a>. Den \u00e4r en f\u00f6ruts\u00e4ttning. N\u00e4r man v\u00e4ljer ut ett casino m\u00e5ste fr\u00e5gor om licens, r\u00e4ttvisa, dataskydd och ansvarsfullt spelande vara i fokus. Lotto Casino inriktar sig till den svenska marknaden och talar g\u00e4rna om sina skydds\u00e5tg\u00e4rder. Men hur fungerar de egentligen ut i praktiken? Vi granskar p\u00e5 Lotto Casinos s\u00e4kerhetsstruktur, dess roll i svensk och europeisk lagstiftning, och de praktiska \u00e5tg\u00e4rder som ska s\u00e4kra din integritet och dina pengar. Fr\u00e5n krypteringsteknik till oberoende revisioner f\u00e5r du h\u00e4r en \u00f6versk\u00e5dlig bild av om detta casino \u00e4r en riskfri plats att spela p\u00e5.<\/p>\n

Tillst\u00e5nd och Reglering: Den Lagliga Grunden<\/h2>\n

Registreringen \u00e4r det mest betydelsefulla tecknet p\u00e5 ett trov\u00e4rdigt onlinecasino. Lotto Casino opereras under en licens fr\u00e5n Malta Gaming Authority (MGA), en av Europas fr\u00e4msta tillsynsmyndigheter inom spelbranschen. En MGA-licens fordrar att casinot uppfyller strikta regler f\u00f6r deltagarnas r\u00e4ttigheter, skydd av ins\u00e4ttningar och insyn. Men det f\u00f6rekommer en viktig nyans f\u00f6r svenska spelare. Sedan 2019 kr\u00e4ver svensk lag att casinon som v\u00e4nder sig mot svenska marknaden ocks\u00e5 beh\u00f6ver ha en licens fr\u00e5n Spelinspektionen. Lotto Casino verkar under sin MGA-licens, vilket \u00e4r helt lagligt f\u00f6r svenskar att utnyttja. S\u00e4kerheten du f\u00e5r grundar sig dock p\u00e5 maltesisk och EU-r\u00e4tt, inte p\u00e5 den unika svenska konsumentskyddslagstiftningen. Det \u00e4r en differens som \u00e4r viktig att veta.<\/p>\n

Integritetsskydd och Krypteringsteknik: S\u00e4kerst\u00e4ller Dina Personuppgifter<\/h2>\n

Att skydda personliga och finansiella uppgifter online \u00e4r ytterst viktigt. Lotto Casino till\u00e4mpar protokollet Secure Socket Layer (SSL) f\u00f6r att skydda all data som \u00f6verf\u00f6rs mellan dig och casinots servrar. Det \u00e4r samma sorts teknik som banker brukar. Informationen \u2013 dina kontouppgifter, transaktioner och personliga data \u2013 blir otydbar kod f\u00f6r alla obeh\u00f6riga. Casinot f\u00f6ljer dessutom strikta interna riktlinjer f\u00f6r databehandling som \u00e4r avpassade till EU:s dataskyddsf\u00f6rordning (GDPR). Det sk\u00e4nker dig som svensk spelare r\u00e4tt att se, r\u00e4tta till och ta bort dina uppgifter. Lotto Casino \u00f6verl\u00e5ter inte heller vidare eller l\u00e4mnar ut spelardata med tredje part utan ditt explicita godk\u00e4nnande.<\/p>\n

R\u00e4ttvisa spel och Oberoende Tester: \u00c4r egentligen Spelen R\u00e4ttvisa?<\/h2>\n

Lojaliteten f\u00f6r ett casino bygger p\u00e5 att spelen \u00e4r r\u00e4ttvisa. Ingen person ska ha m\u00f6jlighet att p\u00e5verka utfallet. Lotto Casino anlitar oberoende testlaboratorier verifiera alla sina spel. Organisationer som eCOGRA eller iTech Labs utv\u00e4rderar regelbundet spelens slumpgeneratorer (RNG). Deras huvudsakliga jobb \u00e4r att se till att varje snurr, varje kortdrag, \u00e4r helt slumpm\u00e4ssigt och of\u00f6ruts\u00e4gbart. Resultaten av dessa tester, inklusive den verifierade utdelningsprocenten (RTP) f\u00f6r varje spel, \u00e4r tillg\u00e4ngliga offentligt. Du kan se dem ofta p\u00e5 sj\u00e4lva spelets informationssida eller p\u00e5 testlaboratoriets hemsida. Den h\u00e4r transparensen \u00e4r en grundpelare till f\u00f6rtroende. Den garanterar att spelet inte g\u00e5r att manipulera.<\/p>\n

Vad exakt \u00e4r RTP och Av vilken anledning \u00e4r det Viktigt?<\/h3>\n

RTP st\u00e5r f\u00f6r “Return to Player”. Det \u00e4r en teoretisk andel som visar hur mycket av de insatsade pengarna ett spel \u00e5terbetalar tillbaka till spelarna \u00f6ver en mycket l\u00e5ng tid. Ett spel med 96% i RTP inneb\u00e4r att det i genomsnitt returnerar 96 kronor f\u00f6r varje hundralapp som satsats. V\u00e4rdet \u00e4r ingen garanti f\u00f6r din enskilda speltur, men den tj\u00e4nar som en bra referenspunkt f\u00f6r spelets r\u00e4ttvisa och utbetalningspotential. Genom att v\u00e4lja spel med en h\u00f6gre RTP kan du g\u00f6ra mer informerade beslut. Att Lotto Casino presenterar RTP-v\u00e4rdena tydligt \u00e4r en bra vana.<\/p>\n

Roll f\u00f6r Oberoende granskare<\/h3>\n

De oberoende testlaboratorierna utf\u00f6r mer \u00e4n att bara kontrollera slumpgeneratorer. De inspekterar ocks\u00e5 hur casinot uppfyller sina licensvillkor. Det kan r\u00f6ra procedurer f\u00f6r ins\u00e4ttningar och uttag, eller om marknadsf\u00f6ringen har etisk niv\u00e5. Deras certifieringar och regelbundna kontroller fungerar som en extra trygghet f\u00f6r spelaren. N\u00e4r ett casino som Lotto Casino uppvisar logotyper fr\u00e5n dessa respekterade organisationer, \u00e4r det ett tydligt tecken p\u00e5 att de fokuserar p\u00e5 r\u00e4ttvisa och regeluppfyllelse.<\/p>\n

Ekonomisk Trygghet: S\u00e4kra \u00d6verf\u00f6ringar och Skydd f\u00f6r Ins\u00e4ttningar<\/h2>\n

Att sk\u00f6ta pengar online fordrar s\u00e4kerhet i alla led. Lotto Casino anv\u00e4nder k\u00e4nda betalningsleverant\u00f6rer som passar den svenska marknaden. H\u00e4r erbjuds kreditkort, bank\u00f6verf\u00f6ringar och e-pl\u00e5nb\u00f6cker som Trustly, Skrill och Neteller. Varje transaktion skyddas av den SSL-kryptering vi talade om tidigare. Ett annat avg\u00f6rande skydd \u00e4r ins\u00e4ttningsskyddet. Enligt maltesisk lag, som MGA \u00f6vervakar, ska spelares ins\u00e4ttningar lagras p\u00e5 separata, skyddade bankkonton. Det medf\u00f6r att dina pengar skiljs fr\u00e5n casinots egna operativa medel. Om casinot drabbas av ekonomiska problem \u00e4r dina ins\u00e4ttningar s\u00e4krade. Det utg\u00f6r en grundl\u00e4ggande konsumentskydds\u00e5tg\u00e4rd.<\/p>\n

Ansvarsfullt Spelande: Verktyg och St\u00f6d<\/h2>\n

Ett s\u00e4kert casino tar inte bara hand om dina information och pengar. Det m\u00e5ste ocks\u00e5 hj\u00e4lpa dig att spela p\u00e5 ett h\u00e4lsosamt s\u00e4tt. Lotto Casino har en upps\u00e4ttning verktyg f\u00f6r ansvarsfullt spelande som du sj\u00e4lv kan s\u00e4tta p\u00e5. De \u00e4r viktiga f\u00f6r att kontrollera ditt spelande:<\/p>\n