/* 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":29160,"date":"2026-05-19T09:35:23","date_gmt":"2026-05-19T09:35:23","guid":{"rendered":"http:\/\/klecet.edu.in\/alumni\/?p=29160"},"modified":"2026-05-16T03:25:38","modified_gmt":"2026-05-16T03:25:38","slug":"les-fabricants-de-pergolas-en-france-liste-6","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/les-fabricants-de-pergolas-en-france-liste-6\/","title":{"rendered":"Les fabricants de pergolas en France Liste"},"content":{"rendered":"
Content<\/p>\n
Dans cette logique de d\u00e9marche \u00e9co-citoyenne, les terrasses bioclimatiques Biossun sont compos\u00e9es \u00e0 98% d\u2019aluminium premi\u00e8re fusion, une mati\u00e8re totalement recyclable.<\/p>\n
Depuis 1978, Corradi con\u00e7oit et cr\u00e9e des solutions pour l\u2019ext\u00e9rieur, alliant les \u00e9l\u00e9ments de la nature et les technologies de pointe pour cr\u00e9er des espaces uniques. Telles sont les traits distinctifs qu\u2019on retrouve dans les mod\u00e8les Pergotenda\u00ae, dans les pergolas bioclimatiques avec couvertures \u00e0 lames et dans les voiles d\u2019ombrage inspir\u00e9es du monde nautique. Les solutions Corradi, depuis 40 ans, tirent leur origine de la haute couture italienne et parlent le langage de l\u2019\u00e9motion. Pour en savoir plus sur les diff\u00e9rentes configurations et options disponibles, consultez la page pergolas bioclimatiques adoss\u00e9es. Vous y trouverez des mod\u00e8les con\u00e7us pour s\u2019adapter \u00e0 chaque type d\u2019habitation, offrant une protection efficace et un design harmonieux pour valoriser votre ext\u00e9rieur. Un syst\u00e8me de protection solaire bien choisi transforme v\u00e9ritablement le quotidien, surtout lorsque les beaux jours arrivent.<\/p>\n
En renseignant votre adresse e-mail, vous acceptez de recevoir notre newsletter et nos offres commerciales. Vous pouvez vous d\u00e9sinscrire \u00e0 tout moment via le lien pr\u00e9sent dans nos e-mails. Pour en savoir plus sur la gestion de vos donn\u00e9es et vos droits, consultez notre politique de confidentialit\u00e9.<\/p>\n
L\u2019entreprise allemande SOLARLUX, depuis maintenant 30 ans, fabrique des v\u00e9randas et des extensions d\u2019habitat. En effet, test\u00e9s et d\u00e9velopp\u00e9s en permanence, tous les produits ont obtenu plusieurs certifications mises par des organismes de contr\u00f4le nationaux et internationaux. Cette pergola bioclimatique install\u00e9e \u00e0 Vienne offre une solution id\u00e9ale pour profiter des beaux jours sur une terrasse qui s’ouvre sur un grand jardin avec une vue d\u00e9gag\u00e9e. \u00c9quip\u00e9e d’un store \u00e0 zip, elle permet de filtrer la lumi\u00e8re pour une utilisation confortable en toutes saisons.<\/p>\n
Elle propose des solutions innovantes afin de valoriser l\u2019am\u00e9nagement ext\u00e9rieur. Elle r\u00e9pond \u00e9galement \u00e0 tous les besoins gr\u00e2ce \u00e0 des produits sur-mesure. L\u2019entreprise est une r\u00e9f\u00e9rence dans la fabrication de store banne, de pergola ou tous autres projets ambitieux. Afin de r\u00e9aliser de v\u00e9ritables espaces de vie en plein air, l\u2019entreprise depuis 30 ans a r\u00e9alis\u00e9 des produits performants avec un design impeccable. AJ2R est un groupe industriel fran\u00e7ais sp\u00e9cialis\u00e9 dans l\u2019am\u00e9nagement ext\u00e9rieur sur mesure \u00e0 destination des professionnels.<\/p>\n
En s\u00e9parant les circuits et en r\u00e9organisant l\u2019installation, nous avons transform\u00e9 une situation fig\u00e9e en syst\u00e8me \u00e9volutif, s\u00e9curis\u00e9, et plus facile \u00e0 entretenir \u00e0 l\u2019avenir. C’\u00e9tait aussi dimanche de s\u00e9lection g\u00e9n\u00e9ration 2007 pour quatre de nos -15 filles surclass\u00e9es (Candice, Omeima, Margot et Leonie). Il permet de d\u00e9tecter une pi\u00e8ce fatigu\u00e9e avant la panne et de maintenir efficacit\u00e9 et s\u00e9curit\u00e9 du syst\u00e8me, surtout apr\u00e8s les saisons \u00e0 forte utilisation.<\/p>\n
Notre mission est de d\u00e9clencher des opportunit\u00e9s en conduisant \u00e0 nos clients d\u00e9cideurs la bonne information au bon moment. Nous tentons ainsi, \u00e0 notre mani\u00e8re, de contribuer \u00e0 la sauvegarde d’emplois et au maintien d’outils de production par la reprise d’entreprises en difficult\u00e9. Faites confiance \u00e0 Luminence.fr pour allier innovation, qualit\u00e9 et service sur mesure.<\/p>\n
Depuis le 31 juillet 2024, l’acc\u00e8s aux informations relatives aux b\u00e9n\u00e9ficiaires effectifs (RBE) n’est plus public. Ce site utilise Google Analytics pour collecter des informations anonymes telles que le nombre de visiteurs du site et les pages les plus populaires. Flandria aluminium est un acteur incontournable sur le march\u00e9 de l\u2019aluminium extrud\u00e9. Dont, des \u00e9quipes exp\u00e9riment\u00e9es, une certification garantissant la qualit\u00e9 des profil\u00e9s, et un environnement de travail s\u00e9curis\u00e9. Repreneurs.com est un service d’information, de veille et alertes sur les proc\u00e9dures collectives en France, con\u00e7u et maintenu depuis 2016 par Dealing-Room, broker M&A sp\u00e9cialis\u00e9 dans l’\u00e9conomie num\u00e9rique.<\/p>\n
D\ufffdcouvrez les connexions de Jean-Philippe DEREYMOND avec d’autres entreprises et dirigeants. 10 millions d’entreprises et plus de 9 millions de dirigeants pr\ufffdsents sur Soci\ufffdt\ufffd.com. V\ufffdrifications intelligentes sur un dirigeant et tous ses mandats afin de vous faire gagner du temps dans vos d\ufffdmarches de conformit\ufffd. Je veux la Domotiser, est ce que je peux faire ton branchement en laissant le branchement telecoSinon comment as tu g\u00e9r\u00e9 les fins de course zenisun.fr<\/a> et les ouverture \u00e0 25 et 75% (avec le temps ?).<\/p>\n La plupart des prestataires proposent un devis gratuit avant d\u00e9but des travaux, ce qui aide \u00e0 planifier sereinement l\u2019intervention. L\u2019identification pr\u00e9coce d\u2019un souci technique permet d\u2019\u00e9viter de gros travaux. Intervenir rapidement garantit aussi que les autres composants, souvent sollicit\u00e9s ensemble dans ces structures automatis\u00e9es, restent en bon \u00e9tat. Beaucoup d\u2019utilisateurs h\u00e9sitent entre r\u00e9aliser eux-m\u00eames l\u2019op\u00e9ration ou contacter un professionnel sp\u00e9cialis\u00e9.<\/p>\n Pour voir l’int\ufffdgralit\ufffd des personnes physique qui contr\ufffdlent , vous devez y \ufffdtre habilit\ufffd. Demandez \ufffd recevoir par mail l’ensemble des actionnaires pr\ufffdsents dans les statuts \ufffd la date du jour. Conform\u00e9ment \u00e0 la loi "Informatique et libert\u00e9s" du 6 janvier 1978, vous pouvez vous opposer \u00e0 l’affichage de donn\u00e9es vous concernant. Si vous souhaitez exercer ce droit, merci de consulter notre Foire Aux Questions. En soumettant ce formulaire, j’accepte que les informations saisies soient exploit\u00e9es afin de traiter ma demande.<\/p>\n","protected":false},"excerpt":{"rendered":" Content Informations L\ufffdgales Entreprise li\ufffde Annonces l\u00e9gales gratuites Zenisun Dans cette logique de d\u00e9marche \u00e9co-citoyenne, les terrasses bioclimatiques Biossun sont compos\u00e9es \u00e0 98% d\u2019aluminium premi\u00e8re fusion, une mati\u00e8re totalement recyclable. Informations L\ufffdgales Depuis 1978, Corradi con\u00e7oit et cr\u00e9e des solutions pour l\u2019ext\u00e9rieur, alliant les \u00e9l\u00e9ments de la nature et les\u2026<\/p>\n