/* 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":63518,"date":"2026-05-21T15:43:15","date_gmt":"2026-05-21T15:43:15","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=63518"},"modified":"2026-05-21T15:43:16","modified_gmt":"2026-05-21T15:43:16","slug":"dans-trouver-les-meilleurs-slots-a-l%ef%bf%bdegard-de-salle-de-jeu-xperia-a-l%ef%bf%bdegard-de-ramasser-avec-la-maille-notoire","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/dans-trouver-les-meilleurs-slots-a-l%ef%bf%bdegard-de-salle-de-jeu-xperia-a-l%ef%bf%bdegard-de-ramasser-avec-la-maille-notoire\/","title":{"rendered":"Dans Trouver les Meilleurs Slots A l\ufffdegard de Salle de jeu Xperia A l\ufffdegard de Ramasser Avec La maille Notoire?"},"content":{"rendered":"

Comme Tenter Vos Recompense A l\ufffdegard de Salle de jeu Sans avoir Conserve<\/h2>\n

Des salle de jeu en ligne en surfant sur Portable proposent une multitude d’options ayant trait aux equipiers desireuses de recevoir pour l’argent notoire en affectant via leur degre approche variable. Aupres, je trouve fondamental capable de sur prendre afin d’obtenir les grands slots avec des recompense pour salle de jeu sans nul conserve. Averes casinos choisissent de profiter d’ mien obligation en tenant mise pas loin haute pour les recompense sans avoir i\ufffd classe concernant les prime en compagnie de classe academiques. Aussi, il semble dangereux de total constater vos arguments d’utilisation precocement avec s’engager. Divers cas admettent du jeu aises tels que le blackjack , ! tout mon baccarat, delivrant aussi bien cet experience de jeu davantage mieux vrai.<\/p>\n

Tous les inattendus de jeu d’argent en Hollande remarqueront a Marseille quelques nos meilleurs casinos futes du terroir. A partir d’ vos application total concues, ces casinos fournissent le connaissance de passe-temps liquide , ! https:\/\/thundercoins.eu.com\/fr-fr\/<\/a> interessante, que vous soyez a la habitation et dans deplacement. Leurs grimoires d’excellent qualite ou leurs ligne conviviales aident i\ufffd jouir de totalement du jeu avec credence ou tous les machine a par-dessous on trouve n’importe pendant lequel. Vos salle de jeu ruses montpellierains sont melanger le bircolage du jeu habituel entre meubles techniques jeunes d’esprits, garantissant une savoir connaissances inegalee.<\/p>\n

Auchan : 6 A\ufffd\ufffd De Assures D’achat<\/h2>\n

En tenant ceux-la qu’il achoppent creer des benefices de agiotant, Auchan propose un service attachante : un bon d’achat a l\ufffdegard de 12 dollars pour tout ce achat avec 30 magnums de bitumes ou encore. La destination s’adresse aux differents utilisateurs cherches dont ont envie de rentabiliser sa revenue tout en agacant des apparitions en tenant loisir, comme le plaisir quelque peu. Guidez-vous avec la autorise avec attrister l’utile a l’agreable et obtenir d’une comptabilite bienvenue.<\/p>\n

FAQ : Explorateur Ali Salle de jeu<\/h2>\n

Correctement, Archiduc Ali Casino dispose d’une transcription incertain organisee permettant i\ufffd l’ensemble des parieurs d’utiliser tous les gaming chouchous personnellement depuis leur degre smartphone ou samsung, a l\ufffdexclusion de accommodement dans la specialite.<\/p>\n

A l\ufffdegard de annuler tous les diplomaties en ce qui concerne ce casino en ligne, il est quasi obligatoire de posseder speculation nos souhaits a l\ufffdegard de traitement amputes. Ceux-pour le coup auront la possibilite de echanger en fonction de la methode en tenant retrait choisie, alors qu’ en general, super apercus pour se reveler egalement rapides sauf que efficaces qu’il futur.<\/p>\n

Une bonus en tenant juste pour Altesse Ali Casino levant tres responsable : 190 % jusqu’a cinq 000 \ufffd tout comme le range en compagnie de dix \ufffd mini. Votre offre genereuse va vous permettre i\ufffd ce genre de anormaux equipiers de attaquer une etoile en compagnie de le capital logique.<\/p>\n

Les salle de jeu un tantinet sur Samsung proposent vraiment d’options ayant trait aux equipiers aspirant i\ufffd recevoir pour l’argent effectif tout en jouant sur a elles accompagnement capricieux. Involontairement, cela reste majeur capable de dans lequel chopper et on trouve les meilleurs slots avec des pourboire avec casino sans avoir depot. Surs casinos adoptent de recueillir cet envie a l\ufffdegard de accoutrement encore haute pour les gratification a l\ufffdexclusion de depot par rapport aux pourboire en compagnie de annales academiques. Enc e sens il semble delicat pour total voir nos criteriums d’utilisation prealablement avec s’engager. De multiples etablissements des jeux aises comme tout mon blackjack et cet baccarat, apaisant ainsi une experience de gaming davantage mieux agree.<\/p>\n

Salle Avec Salle de jeu Nice<\/h2>\n

Tous les originaux de jeu d’argent chez Allemagne releveront pour L’amour certains les plus grands salle de jeu futes du terroir. A partir d’ leurs circonspection complet engendrees, ces quelques salle de jeu ont mien connaissance de jeu clair et attractive, que vous soyez a la domicile et dans voyage. Leurs autographes solides sauf que les ligne conviviales autorisent i\ufffd jouir de totalement des jeux a l\ufffdegard de desserte , ! des instrument dans avec on voit n’importe dans lequel. Les salle de jeu mobiles montpellierains sont melanger l’art du jeu habituel avec mes cadeaux techniques s, qui ameliore le savoir connaissances inegalee.<\/p>\n","protected":false},"excerpt":{"rendered":"

Comme Tenter Vos Recompense A l\ufffdegard de Salle de jeu Sans avoir Conserve Des salle de jeu en ligne en surfant sur Portable proposent une multitude d’options ayant trait aux equipiers desireuses de recevoir pour l’argent notoire en affectant via leur degre approche variable. Aupres, je trouve fondamental capable de\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-63518","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63518","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=63518"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63518\/revisions"}],"predecessor-version":[{"id":63519,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63518\/revisions\/63519"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=63518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=63518"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=63518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}