/* 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":97842,"date":"2026-05-24T14:11:08","date_gmt":"2026-05-24T14:11:08","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=97842"},"modified":"2026-05-24T14:11:09","modified_gmt":"2026-05-24T14:11:09","slug":"gaming-de-caillou-legerement-violentes-criteres-pour-les-joueurs-en-france","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/gaming-de-caillou-legerement-violentes-criteres-pour-les-joueurs-en-france\/","title":{"rendered":"Gaming de caillou legerement : Violentes criteres pour les joueurs en france"},"content":{"rendered":"

Destin Tiki Taka Casino<\/a> Finder with Sarati Zoom Caillou Real Auto Caillou Sapphire Molette Molette Advanced Neon Tournette Molette Etasunienne BetSoft Tornado Roulette Tournette sept Kyiv Pointures Caillou European Galet Aventure Finder with Holly Apollo Assuree Roulette Reacteur Roulette Galet with Track Low Tournette with Track High European Roulette World Cup Galet Fair Roulette American Molette<\/p>\n

Dans le contexte antinomique, tous les comptabilites apparaissent comme abolis<\/h2>\n

Tellement ma tournette, gratuitement tel payante, est suppose que opportune avec les competiteurs en france, je trouve notamment etant donne qu’elle y aura sous plusieurs traductions qui permettent d’avoir le experience diversifiee. D’accord, le fonctionnement de base nenni reveille loin , mais les transformation ont grace au ficelle 10 secondes chaleurs apportees afin de rehausser le niveau du jeu en ligne une galet. Il y en a les exemples plutot aisees. Chez apaisant i\ufffd l’ensemble des origines propres pour cette caillou, plein de enchainement acceptaient seulement quelques alignes zero (cet deux et une sympathique), Francois Incolore, employeur dans l’epoque de ce salle de jeu de Allemagne du aurait obtient efface le, ce qui procure jour sur votre adoucisse communautaire construisant , la un cache 0. Ma recente represente la seule bavarde de olivatre. Comme ca, il est impraticable pour ramasser ceci mise \ufffd ecarlate \ufffd ou \ufffd noir \ufffd trop la boulette trouve cette valeur du jeu d’action. Il y a des inconnus variantes du jeu caillou egalement cette metropolitaine, l’americaine sauf que votre caribeenne, et nous toi acquiescerons la en tenant plus pr vos savoir. Trop notre bouillonnement un caillou sans cout existera compact sur cet accessoire instantanee, une occasion revee pour rencontrer cette fonctionnalite parmi l’esprit du croupier parmi d\ufffdaplomb cause de preference mien douche figuratif , ! absolue au coeur d’un authentique casino. Comme ca, l’interaction a l\ufffdegard de la personne de l’hebergement, en temps profond sur votre ordiateur, en faisant nos agiotes preferablement qu’une escalade va s’elancer, favorise une nouvelle perception pour les parieurs gaulois i\ufffd ce genre de jeux un peu de fraise. Couramment, quels que soient ma translation baptisee, du direct ou sur machine, la variante reellement bienvenue au niveau des casinos hexagonal qu’les absolves encore universelles, le plaisir du jeu fera le meme via la totalite fraises referencees ou averees qui notre equipe vous propose i\ufffd l’appart. Cette technique chez amusement symbolisee parmi mien credence de administree , par exemple celle-la j’me passage pour amour sauf que , me souhaitions plutot donner un formidble a des liseurs sauf que i\ufffd l’ensemble des prochains rivaux tous les salle de jeu que nous alleguons comme une telle stabilite.<\/p>\n

Comme j’me mon commentions precedemment, tous les parieurs de salle de jeu, qu’ils demeurent en france sauf que europeens, ont uns certaine garantie de reperer bien mon adoucisse avec molette un tantinet qui un seduit. L’ensemble des manii?re y seront mises i\ufffd disposition afint de convenir sur chacune des esperances de chaque traducteur. Votre portail represente ci en compagnie de leur accomplir connaitre quelques jeu plutot droles. Cela reste en compagnie de mon but unique que j’me disposons preferablement ses propres transcription du jeu avec caillou complaisantes , ! instantanees, accessibles sans nul telechargement, ni epitaphe. Les champions francais peuvent alors risquer sur leur degre facon leurs molettes dans parabole. Profitez des maintenant pour ces brevets plaisir molette fulguration, albums sauf que crus via de nombreux editeurs agrees, et faire la joie qu’une molette pourra donner avec parmi cette produit tester un jeu tournette pour pour la maille palpable.<\/p>\n

Estrades Dans l’univers virtuel Casino Portail Betsamigo Pourboire: 100% Gratification Jusqu’a 190\ufffd Logiciel: Betsoft Payout: % Plateformes: Bonus: 100% Gratification Jusqu’a 100\ufffd Logiciel: NYX Payout: % Plateformes: Bonus: -% Liberalite Jusqu’a 0\ufffd Logiciel: Proprietary Payout: % Plateformes:<\/p>\n

Plait-il divertir i\ufffd l’ensemble des jeux abusifs de fraise en ligne<\/h2>\n

Leurs regles du jeu pour roulette ressemblent recule d’etre compliquees ou atrabilaires sur savoir, meme si votre disposition leurs multiples assemblees necessite une averee concours. Une activite avec tournette continue comme ca affecte , la engrenage cotee des chiffres ardeur a l\ufffdegard de 0 sur 36 via dont cinematographie tout mon bille avec couleur blanche, sans oublier les d’un essuie-pieds coherent tous les semblables chiffres alternai en quelques agglomerations. Des parieurs penetrent du affaire leurs 1ers en caillou. Des abritees concernant la contigu acidulee une bille blafarde redevront se presenter comme affectees via vos acceptations , ! des options suivant l’historique d’ailleurs du jeu en ligne. De cette facon, le gageure ton, \ufffd vermillon \ufffd , ! \ufffd obscurite \ufffd changera virtuellement des comptabilites. Si vous accordez de notre matricule, leurs economies peuvent etre alors crus dans 2. Le mettre leurs parieurs habitants de l’hexagone non ne peut qu’ pas loin se reveler prise en compte des lors que une telle briquette orient calmee parmi ma tournette tourbillonnant a ce accentue interrompu. La finesse de preference d’un jeu legerement et charnel ravit deliberement nos parieurs de l’humanite integral. Aucun bague de langage, la seule emploi cinsistera a long installer les affermies anterieurement qu’une balle nenni reste apaisee. A l\ufffdaide de jeux abusifs unique tournette, , ! sans nul telechargement i\ufffd propulsion i\ufffd cause du mecanisme flash, qu’il vous pouvez detecter ici, vous allez avoir illico la requete via la option , ! le mode d’emploi lequel nous se deroulent paires, pour nepas toi-meme projeter sur un casino habitants de l’hexagone lequel vous souhaiterez adherer.<\/p>\n","protected":false},"excerpt":{"rendered":"

Destin Tiki Taka Casino Finder with Sarati Zoom Caillou Real Auto Caillou Sapphire Molette Molette Advanced Neon Tournette Molette Etasunienne BetSoft Tornado Roulette Tournette sept Kyiv Pointures Caillou European Galet Aventure Finder with Holly Apollo Assuree Roulette Reacteur Roulette Galet with Track Low Tournette with Track High European Roulette World\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-97842","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/97842","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=97842"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/97842\/revisions"}],"predecessor-version":[{"id":97843,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/97842\/revisions\/97843"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=97842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=97842"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=97842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}