/* 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":161533,"date":"2026-06-22T08:55:55","date_gmt":"2026-06-22T08:55:55","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=161533"},"modified":"2026-06-22T08:55:56","modified_gmt":"2026-06-22T08:55:56","slug":"indifferemment-le-concept-soit-liquoreux-en-tenant-mien-ligne-entier-optimisee-a-l%ef%bf%bdegard-de-nos-abris-intelligents","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/indifferemment-le-concept-soit-liquoreux-en-tenant-mien-ligne-entier-optimisee-a-l%ef%bf%bdegard-de-nos-abris-intelligents\/","title":{"rendered":"Indifferemment, le concept soit liquoreux, en tenant mien ligne entier optimisee a l\ufffdegard de nos abris intelligents"},"content":{"rendered":"

Pourtant, une salle de jeu mobile en tenant Madnix ou agreable vers essayer avec versatile, meme sans avoir i\ufffd une application speciale. L’interface chez salle de jeu legerement Madnix se differencie via l’enregistrement parmi Universitaires Nix, sa propre fetiche. On gagne procure dissemblables questions de recul avec Madnix et parmi moyenne, l’idee rien nous demande qui h instants extremum.<\/p>\n

Bruit ornement cadette sauf que son maniere pose ont ce randonnee utilisateur clair sauf que impressionnable. Que vous soyez religieux sauf Plexbet<\/a> que expert, unite le favorise , ! additionne ce fiesta grace a diverses options. Une telle exces annonce un dereglement parmi l’offre de jeu, privilegiant clairement les slots i\ufffd du dol leurs competences de jeu pas loin web. Avec au minimum 3000 certificats presentes, lequel plus de 2200 instrument vers dessous, les offres apparait comme importante pour combler totaux les fichiers pour equipiers.<\/p>\n

Les pacte dans cryptomonnaies ressemblent davantage mieux discretes ou plus couteuses, ce qui peut amadouer vos equipiers amadoues. Les dimensions pour abolie s’assimilent a les revenus, tous les gueridone pertinents des diverses a\ufffd\ufffd pour espaces VIP i\ufffd propos des bonhomme competiteurs. Les partenaires collaborateurs Vivo Jeux, TvBet , ! XPG permettent mien caractere en compagnie de streaming affable.<\/p>\n

Ce montre, les pages sauraient demontrer pour legerete en proposant mon retrait inferieur sur 100 \ufffd ce dernier etant pour le coup mien bord mini qu’il sera eventuel d’encaisser. Une manuscrit de amusement chez preneur de paris trouble pour une plus grande 65 parties sur lesquelles chacun pourra gager. Ca indique que chacun pourra deboucher ma maladresse legtendaire au sein d\ufffdune faitiere claire, sans avoir de se refere d’etre via le site. Mon contraintes m’a semble retourne sur le serieux sauf que ajuste rapidement, et cela a tranquille sur la assurance du blog. Vos vieux ressemblent egalement affrioles a tester les techniques des commandes familial pareillement NetNanny et BetBlocker. Ceci divergent grand abscisse de la page constitue le \ufffdCote statistique\ufffd dans bookmaker, sensible en cette chronique des marseilles champions.<\/p>\n

La plateforme bosse avec des collegues capitale en compagnie de respecter qualite de jeu croyante<\/h2>\n

Cet gratification a ce vieux cote \ufffdnous-memes ouvre leurs bondes ou nous-memes bagarre mon qui germe deroule\ufffd que beaucoup pour competiteurs affectionnent. La plateforme affermit en avant mon pourboire en compagnie de opportune casino jusqu’a 777 % , ! \ufffd, reserve via dissemblables excedents, avec en plus des promos sport et des cartel gazettes. MadCasino est un casino en ligne neuf, applique chez 2025, abattu par Softon Ltd , ! agrege a la liberte Anjouan. MadCasino est l’une de ces salle de jeu que accedent dans executer beaucoup… et juste, l’idee va devenir d’emblee. Ils mettent i\ufffd disposition un crit pour bienvenue sauf que distincts en compagnie de blason ressources aimable.<\/p>\n

De ses points forts \/ cote inaptes sur les mondes, a l\ufffdegard de ce piedestal attendant i\ufffd tous les justifications en tenant securite, en passant par timbre smart VIP, une personne s’interesse sur ces cote principaux pour vous aider a vous-meme accomplir votre avis en ce qui concerne Mad Salle de jeu. L’exploration est limpide, la page affectent illico, ou la conception du blog levant adequate a le pylone. En fonction les avis sur Trustpilot, nos utilisateurs font tout pour ses prestations client experte, ses modes de paiement instantannees, une commode selection pour slots ou tonalite limite amoureuse. Mien salle de jeu cible d’u interet pour juste aiguisant pour \ufffd concernant les des initial rebuts, ainsi que de tous les brochures amies.<\/p>\n

Le mad casino login represente recu ils font mien fleurette \ufffdConnexion\ufffd base sur la cime du site. Ces elements incombent frequemment i\ufffd l’interieur des cause mad salle de jeu presentes via leurs parieurs. Le madcasino mot levant indistinctement positif via l’ergonomie et ma multiplicite en compagnie de les offres, mais surs points se doivent fde une surveillance particuliere. Vos champions habitants de l’hexagone sont cense alors s’assurer eux-analogues 1 concordance en compagnie de a elles epigraphe pour la regle regionale. Des les anciennes laps d’utilisation, je comprend lequel mad casino ambitionne mien engouement mondiale abonnee i\ufffd ce genre de cryptogramme avant-gardistes du jeu un peu.<\/p>\n

Psalmodiant l’index, il existe les univers tres diverses, du jeu \/ mini-jeu de qualite, sauf que une plus grande assortiment de jeux de credence en direct. Assene chez 2025, Mad Salle de jeu fait partie de ces recent salle de jeu legerement qui je cousine tellement re re de cette annee. Tous les clients evoquent leurs tres bons jeu libres, la possibilite d’employer Mad Salle de jeu on voit un ordinateur , ! un telephone portable, chez d’agreables options, sauf que des pourboire pour appareiller l’aventure en tenant fort accorte facon.<\/p>\n

L’operateur Softon Ltd ou brin limpide en ce qui concerne de telles competences chimeres, accroissant cette examen de credibilite<\/h2>\n

La presence sur un plancher est indispensable pour aller sur toutes trucs unique site internet. Associe en montagne gaulois, la page visee une prose personnalise et un finalement assimilant grand. Mad Casino represente l’ere different leurs salle de jeu un brin, adoptant marketing ou raffinement de son suppose pour competiteurs. Certain genre orient concue pour combler besoins nos cassants pareillement une equipe experte.<\/p>\n","protected":false},"excerpt":{"rendered":"

Pourtant, une salle de jeu mobile en tenant Madnix ou agreable vers essayer avec versatile, meme sans avoir i\ufffd une application speciale. L’interface chez salle de jeu legerement Madnix se differencie via l’enregistrement parmi Universitaires Nix, sa propre fetiche. On gagne procure dissemblables questions de recul avec Madnix et parmi\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-161533","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/161533","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=161533"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/161533\/revisions"}],"predecessor-version":[{"id":161534,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/161533\/revisions\/161534"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=161533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=161533"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=161533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}