/* 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":140864,"date":"2026-06-11T02:26:32","date_gmt":"2026-06-11T02:26:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=140864"},"modified":"2026-06-11T02:26:32","modified_gmt":"2026-06-11T02:26:32","slug":"ringospin-casino-de-plaats-waar-dromen-uitkomen-in-belgie","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/ringospin-casino-de-plaats-waar-dromen-uitkomen-in-belgie\/","title":{"rendered":"Ringospin Casino \u2013 De Plaats Waar Dromen Uitkomen in Belgi\u00eb"},"content":{"rendered":"
\n\"Claim<\/p>\n

Betreed Ringospin Casino, het digitale casino dat Belgische spelers gauw in z’n greep houdt https:\/\/ringospin.eu\/nl-be\/<\/a>. Hier staat alles in het teken van spanning, stijl en uitkeringen die er toe doen. Elke spin kan plots een winst opleveren die alles verandert. Omdat Ringospin een licentie heeft van de Kansspelcommissie, gok je altijd beveiligd en eerlijk. Het platform is helemaal ingericht op wat Belgische spelers zoeken. Een wereld vol kansen wacht op je te wachten.<\/p>\n

Een Indrukwekkende Welkomstbonus voor Startende Spelers<\/h2>\n

Startende spelers uit Belgi\u00eb ontvangen bij Ringospin Casino een warm welkom met een stevig welkomstpakket. Dit aanbod biedt je spelavontuur meteen een flinke duw in de rug. Verwacht op gratis spins, matchbonussen voor je start stortingen en andere bonussen. Zo kun je kalm het casino ontdekken zonder direct je volledige budget aan te spreken. Neem wel even de tijd om de bonusvoorwaarden door te lezen.<\/p>\n

Met deze bonussen krijg je meer speelruimte en meer pogingen om die ene grote jackpot te winnen. Het voelt een beetje alsof het casino je een voorsprong geeft voor de start. Voor Belgen die direct de volledige waarde wensen, is dit een aanvang dat je niet wilt missen. Je merkt meteen dat Ringospin zijn spelers serieus neemt.<\/p>\n

Betrouwbaar en Gegarandeerd Spelen met een Belgische Vergunning<\/h2>\n

Ringospin Casino plaatst veiligheid op de eerste plaats. Het platform beschikt over een licentie van de Belgische Kansspelcommissie. Die waarborgt dat alle spellen eerlijk verlopen, dat je gegevens degelijk beschermd zijn met robuuste encryptie en dat het casino zich aan de regels conformeert. Voor spelers in Belgi\u00eb is dat een significant teken dat ze hier aan het juiste adres zijn.<\/p>\n

\"Casinospellen<\/p>\n

Ringospin beschouwt verantwoord spelen ook belangrijk. Je kunt zelf grenzen instellen voor je stortingen, verlies of speeltijd. Deze tools dragen bij om het spelplezier gezond te houden. Je kunt je met een rustig hart op het spel concentreren, wetende dat je in een betrouwbare omgeving speelt.<\/p>\n

Gamen onderweg: Neem de Plezier Overal Mee Naartoe<\/h2>\n

Ons leven speelt zich mobiel af, en Ringospin Casino speelt daarop in. De website is volledig geoptimaliseerd voor smartphones en tablets. Of je een iPhone, iPad of Android-toestel hebt, via je browser krijg je meteen een vloeiende spelervaring. Je hoeft niets te downloaden; de site past zich automatisch aan je scherm aan.<\/p>\n

Je favoriete slots, tafelspellen en live games zijn daarom altijd binnen bereik. Sta je op de trein in Brussel? Lig je thuis op de bank? Neem je toestel en je bent onmiddellijk verbonden. De grafische kwaliteit en de snelheid blijven uitstekend, ook als je onderweg bent.<\/p>\n

Vlotte en Eenvoudige Transacties voor Belgische Spelers<\/h2>\n

Krediet storten en opnemen bij Ringospin Casino is flink eenvoudig gemaakt. Je kunt gebruikmaken van betaalmethodes die in Belgi\u00eb gebruikelijk zijn, zoals Bancontact, creditcards en verschillende e-wallets. Gewoonlijk zijn transacties binnen een paar minuten afgerond. Zo kun je vlot beginnen of gauw bij je winst.<\/p>\n

Het casino werkt met duidelijke uitbetalingsvoorwaarden. Door die transparantie loop je niet tegen onverwachte problemen aan. Of je nu een klein bedrag opneemt of een grote prijs, de afhandeling geschiedt soepel. Deze financi\u00eble effici\u00ebntie maakt de spelervaring een stuk aangenamer.<\/p>\n

Een Uitgebreide Verzameling van Topspellen<\/h2>\n

De gamebibliotheek van Ringospin Casino laat weinig te wensen over. Je vindt er honderden games van topontwikkelaars als NetEnt, Pragmatic Play en Play’n GO. Vanaf ouderwetse fruitautomaten naar moderne video slots met complexe bonusrondes, de selectie is groot. Voor degenen die houden van van tafelspellen vind je voldoende opties, met verschillende versies van blackjack, roulette en baccarat.<\/p>\n

Het live casino is een belevenis op zich. Door high-definition streams ga je zitten aan live tafels met deskundige dealers. De ambiance van een landbased casino komt zo direct bij je thuis. Voor de Belgische speler houdt dit in dat je elke gewenste game kunt kiezen en dat in goede kwaliteit. Er worden regelmatig nieuwe titels toegevoegd, dus blijft het altijd interessant.<\/p>\n

Voortreffelijke Klantenservice die Altijd Klaarstaat<\/h2>\n

Een degelijk casino kenmerkt zich ook door de service, en daar blijft Ringospin niet bij achter. Het team ondersteunt Belgische spelers effici\u00ebnt en op een prettige manier. De snelste route is de live chat, waar je bijna direct contact hebt met een medewerker. Je kunt ook een e-mail sturen.<\/p>\n

Verder treft u op de website een uitgebreide FAQ-sectie. Daarin treft u antwoorden op veelgestelde vragen over accounts, bonussen en betalingen. Deze service zorgt voor een zorgeloze tijd. Het is geruststellend om te weten dat er hulp is als je die kunt gebruiken tijdens het spelen.<\/p>\n

Speciale Promoties en een Trouw Programma<\/h2>\n

\"Inclave<\/p>\n

De acties stoppen niet na het claimen van je welkomstbonus. Ringospin Casino gaat door met spelers verrassen met nieuwe promoties, tijdelijke acties en toernooien. Zoals cashback-aanbiedingen, gratis spins of prijzenpotten voor de meest actieve spelers. Het zorgt dat het spelen boeiend en geeft je een reden om terug te komen.<\/p>\n

Spelers die frequent terugkomen, worden extra beloond via een loyaliteitsprogramma. Hoe meer je speelt, hoe meer punten je spaart. Die punten kun later gebruiken voor hogere beloningen. Het is de wijze van Ringospin om de Belgische spelersgemeenschap te bedanken. Iedereen vindt het fijn om erkend te worden, en hier levert dat ook nog iets op.<\/p>\n

Ringospin Casino laat een sterke indruk als online casino voor Belgi\u00eb. Het combineert een uitgebreide spelcollectie, betrouwbare veiligheid, gunstige bonussen en goede service tot een ideale speelomgeving. Vermaak en winstkansen gaan hier gepaard. Het is veel meer dan alleen een casino; het is een locatie waar je met vertrouwen kunt hopen van een mooie uitbetaling. Begin vandaag nog en ontdek zelf waarom talrijke Belgen voor Ringospin gaan.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Betreed Ringospin Casino, het digitale casino dat Belgische spelers gauw in z’n greep houdt https:\/\/ringospin.eu\/nl-be\/. Hier staat alles in het teken van spanning, stijl en uitkeringen die er toe doen. Elke spin kan plots een winst opleveren die alles verandert. Omdat Ringospin een licentie heeft van de Kansspelcommissie, gok je\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-140864","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140864","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=140864"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140864\/revisions"}],"predecessor-version":[{"id":140865,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/140864\/revisions\/140865"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=140864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=140864"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=140864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}