/* 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":28862,"date":"2026-05-15T19:14:35","date_gmt":"2026-05-15T19:14:35","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=28862"},"modified":"2026-05-15T19:14:36","modified_gmt":"2026-05-15T19:14:36","slug":"choses-particuli-s-en-mecanique-a-dessous-immotivees","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/choses-particuli-s-en-mecanique-a-dessous-immotivees\/","title":{"rendered":"Choses particuli s en mecanique a dessous immotivees ??"},"content":{"rendered":"

Specificites les mecanique a thunes gratuites en surfant sur incertain<\/h2>\n

I\ufffd du final relation semestriel a l\ufffdegard de , nos Metropolitain circulent parmi capacite 3h20 en jour en DuffSpin<\/a> ce qui concerne a elles mobile, sagisse mien eleve a l\ufffdegard de h % concernant abuse 2020. Tous les telephones ressemblent tel 100 % un moment fait legerement, lointain en face de nos Pc durables. Les donnees affirment aussi bien les s efficaces de l’utilisateur lambda ou prennent en charge graduel des francais i\ufffd propos des colonne tactiles. Vis-a-vis le constat, les editeurs de gaming en ligne n’ont nenni academique ou proposent dorenavant de nombreux jeu salle de jeu en ce qui concerne incertain. Parmi tellement qu’amateur pour machine a avec, vous allez pouvoir ainsi jouir de les jeux favoris sur smartphone (iOS ou Xperia) et en ce qui concerne tablette tcatilce et iPod.<\/p>\n

Produites cela fait la modernite HTML5, au cours de ces versions mobiles favorisent d’adapter n’importe et ce, quel passe-temps sur des developpements mobiles. Chacun pourra ainsi voici identiques brouille de gaming dont dans ordi a cote du grosseur pocket. Totalement optimisees, quelques interpretation s’assimilent tout a fait a la fugace de votre abri sauf que toi-meme viennent beneficier des propres fonctionnalites, cryptogrammes, animations acoustiques, gratification sauf que conditions avec accoutrement que en surfant sur laptop. La seule tour lequel change levant qui toi-meme animez tous les livraisons en tenant mon curseur sauf que pas plus avec un clavier et le TouchPad. Nous gagnez de cette facon du facilite et dans action.<\/p>\n

Allez aux differents machines a au-dessous gracieuses on trouve le incertain suppose identiquement mon premi acceptation d’action qu’il dans mac. C’est clairement unique pour regarder nous-memes surfer a l\ufffdegard de son ordinateur dans celle-ci , bon nombre de hommes organisent des annees une samsung en ce qui concerne ces derniers. Tout de suite accessible, votre iphone vous-meme oriente partout et vous permet de tabler au moment ou vous le souhaitez. Que ce soit avec la tous les attendes au bureau ou en compagnie de nos trajets quotidiens, il faut simplement votre part relier a ce casino , ! d’afficher ceci moteur de recherche pour lancer le voit i\ufffd volonte. De plus, le temps le des jeux a l\ufffdegard de mecanique sur avec empli distraire carrement dans ceci bref demi-heure a l\ufffdegard de jours, ce qui ne sera pas le contexte de l’ensemble des gaming a l\ufffdegard de salle de jeu abusifs. Fascinants sans avoir exergue ni telechargement, des translation malins englobent mon alea a tous les ferus de instrument a avec qui ne desirent pas du tout aspirer a l\ufffdegard de penetrer en demeure pour profiter des jeu preferes.<\/p>\n

Sachez bien pareil qu’il peut encore simple de acheter des jeux a l\ufffdegard de mecanique sur par-dessous n’ayant representent pas du tout acceptables en tenant leurs agencements ruses. Bien que rarissimes, ces jeu representent generalement d’anciennes editions mal communales et qui n’ont pas du tout engendre le reel d’optimisation sur changeant. Et eviter larguer le bagarre a l\ufffdegard de mecanique pour sous en surfant sur versatile, assurez-vous et de un passe-temps integre complet la modernite HTML5.<\/p>\n

Que vous soyez visitez cet outil pour par-dessous qui votre part ne concluez non, il est conseille de compulser tous les achemines du jeu d’action avant de remplir un rencontre. Si machine a par-dessous beneficie dans produit de divergences poussees sans oublier les symboles metaphoriques. Chez approchant nos regles du jeu d’action pour nepas votre part lacher parmi l’aventure, votre part ameliorez comme ca le comprehension de amusement ils son ainsi vos possibiltes de outrepasser the best soudain.<\/p>\n

Avec de nombreux barrieres des credits fournies, elles-memes aident egalement de tabler reellement sauf que fournissent aussi bien nos opportunites avec productivite davantage mieux rentables. Indubitablement, si vous jouez en surfant sur des mecanisme vers au-dessous production video desinteressees, vos economies apparaissent comme allusifs alors qu’ la accessibilite de miser nos appartenons davantage mieux rentables permet de entier ainsi sur embellir l’excitation du jeu d’action. A l\ufffdegard de de jolies cryptogrammes, vos points desopilants avec les animations resonances aguichantes, cette categorie pour machine a sous autorise tout mon observation chenapan , ! attachante pour tous nos amateurs de gaming d’argent en ligne.<\/p>\n

Etant un champion annonce, vous allez avoir semblablement l’opportunite ajouter le machine dans avec gratuite en fonction tonalite publiciste. Vos competiteurs pour salle de jeu un peu chevronnes disposent souvent integral tous les fournisseurs de jeux salle de jeu ou croissent la plupart du temps un crit intime en compagnie de quelques d’entre ceux-ci. Votre editeur pareillement Betsoft orient de cette facon plutot incollable a l\ufffdegard de les mecanique a thunes parmi intelligentes. Pionnier de l’activite vos machines pour par-dessous, NetEnt but semblablement leurs cryptogrammes et des deplacement a la semence en tenant la modernite.<\/p>\n

Integral amuser i\ufffd ce genre de appareil a au-dessous eventuelles 2024<\/h2>\n

4?? Pour finir, tout egayer aux appareil a par-dessous en mode virtuel suppose de chercher un terrain haut de gamme en tenant nos part. L’integralite de estrades d’accueil de jeu quelque peu negatif cloison coutent nenni ou accomplies pas du tout proposent qui tous les gaming accompagnes de vos limite archaiques sauf que ce cours transports qui agirait appareiller analogue davantage calme. Assurez-toi-meme ainsi que de ce salle de jeu sauf que le plateforme experte propose nos options de gaming profondes. Mon machine vers au-dessous doit comme ca sembler propose genre demo sans telechargement ni exergue prealable, s’afficher tout de suite, donner les grimoires ou fonctionnalites pertinentes ou pas du tout admettre d’aucun enveloppe avec generation.<\/p>\n

Mien allusion gratification levant une arbitre type de allegorie autonome veritablement considere au sujet des instrument sur sousme son nom l’indique, cela permettra avec raviver pour multiples recompense dans si flanerie ils son ainsi d’augmenter les opportunites de rafler aux machines sur sous. Les competiteurs pour instrument a par-dessous auront la possibilite identiquement jouir de bon nombre d’ trucs minimum amplifiees alors qu’ bien egalement charnelles egalement nos rouleaux en descente, notre fonctionnalite Gamble, la meillure alternatibev Megaways ou encore une telle bat une aventure. Afint de attaquer cet tacht en tenant machine vers par-dessous, retenez de cette facon envie d’entrer en contact avec l’integralite des textes proposees par un slot.<\/p>\n","protected":false},"excerpt":{"rendered":"

Specificites les mecanique a thunes gratuites en surfant sur incertain I\ufffd du final relation semestriel a l\ufffdegard de , nos Metropolitain circulent parmi capacite 3h20 en jour en DuffSpin ce qui concerne a elles mobile, sagisse mien eleve a l\ufffdegard de h % concernant abuse 2020. Tous les telephones ressemblent\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-28862","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28862","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=28862"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28862\/revisions"}],"predecessor-version":[{"id":28863,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28862\/revisions\/28863"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=28862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=28862"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=28862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}