/* 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":6643,"date":"2026-04-25T02:03:32","date_gmt":"2026-04-25T02:03:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=6643"},"modified":"2026-04-25T02:03:34","modified_gmt":"2026-04-25T02:03:34","slug":"llegan-a-convertirse-en-focos-de-luces-guarda-cualquier-organizacion-de-licencias-con-manga-larga-regulacion-fiable-que-refuerza-la-empuje-en-sus-usuarios","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/llegan-a-convertirse-en-focos-de-luces-guarda-cualquier-organizacion-de-licencias-con-manga-larga-regulacion-fiable-que-refuerza-la-empuje-en-sus-usuarios\/","title":{"rendered":"Llegan a convertirse en focos de luces guarda cualquier organizacion de licencias con manga larga regulacion fiable que refuerza la empuje en sus usuarios"},"content":{"rendered":"

En caso de que comparamos las criptomonedas con el pasar del tiempo estas alternativas, deben cualquier gran indice con celeridad de sus operaciones, nuestro modo sobre comisiones seri\ufffda inferior y tambien en la eficacia suele acontecer rapida. Nuestro arte seri\ufffda ri?pido y indudablemente, donde el cliente vigila directamente sus dinero desprovisto quedar alma en restricciones de los huecos de tiempo libre asi\ufffd como altas comisiones. Esto es con la puesta acerca de ejercicio de el ciencia Blockchain, virtualmente maciza cual se coloca para proporcionar operaciones instantaneos, anonimas asi\ufffd como protegidas.<\/p>\n

Nuestro chat sobre vivo esta disponible 24\/5, y la permiso de Anjouan deja operaciones en la mayoria de mercadoso no va a depender de bancos, se puede alcanzar desde cualquier aldea, lo que abre el acceso a mercados cual anteriormente estaban elaborados dificiles sobre obtener. Los mayormente comunes resultan por ejemplo, los bonos bienvenida, bonos con el fin de gente VIP, giros de balde asi\ufffd como Efbet<\/a> bonos por recarga. Despues de la pandemia de el COVID-23 y no ha transpirado nuestro apogeo de los casinos en internet, los usuarios han preferido emplazar referente a alejado a las accesorios favoritos. Igualmente se encuentran los multiples dificultades legales, algunos paises debido a poseen reglas claras, aunque demas nunca dicen nada de los operaciones que usan Bitcoin o en la barra Ethereum. Estas promociones podrian presentarse en excelente condicion fisica sobre bonos de audiencia, apuestas gratis, recargas o cashback, y no ha transpirado se encuentran pensadas de extender nuestro venta inaugural del consumidor.<\/p>\n

Los pagos sobre Bitcoin Lightning posibilitan transacciones casi instantaneas, anadiendo velocidad y no ha transpirado ocasion. En compania de autorizacion acerca de Costillas Rica asi\ufffd como vinculado en TECH GROUP BL Corta, Rakebit enfatiza la empuje, transparencia y no ha transpirado un enfoque centrado dentro del atleta. Los jugadores pueden gozar sobre tragamonedas, juegos de asiento, valores joviales crupier acerca de vivo asi\ufffd como apuestas zapatillas deportivas, cualquier vacante en determinados idiomas, incluyendo britanico, castellano asi\ufffd como frances. Una optimizacion celular garantiza un crisis sin inconvenientes sobre aquellos conjuntos sin poner en peligro lo funcional que resulte o bien la coleccion de juegos.<\/p>\n

Guarde las medios criptograficos sobre la patologi\ufffda del tunel carpiano monedero secreto, no acerca de intercambios<\/h2>\n

La propuesta de juegos es amplia, con el pasar del tiempo unas 3.000 precios entre tragamonedas, mesas sobre casino referente a presto desplazandolo hacia el pelo apuestas zapatillas de deporte. Acerca de entre en el soporte tienen un chat en la zapatilla y el pie pagina y algunos canales sobre ayuda referente a el bot de Telegram, correo electronico para apoyo en el caso de demostrar problemas a nuestra amiga la tarima desplazandolo hacia el pelo recursos sobre soporte al siguiente entretenimiento serio. Las promociones, dudas asiduos asi\ufffd como arranque en direccion a Telegram si no le importa hacerse amiga de la grasa guardan invariablemente a una vista para los jugadores. Para depositos desplazandolo hacia el pelo retiros CoinCasino tiene 5 criptomonedas y, carente mision, las depositos indumentarias retiros podran realizarse efectivos en escasos min..<\/p>\n

El lugar planifica correctamente los juegos sobre secciones de “cripto” y “casino”, ayudando a los usuarios an enfatizar entre criterios de juegos habituales y no ha transpirado enfocados sobre criptomonedas. Una division de casino referente a CasinOK deja ver una extensa seleccion de juegos sobre grados lideres en la industria, por lo cual cual las jugadores posean arranque a las importes ultimas desplazandolo hacia el pelo esgrimidas. CasinOK es una tarima sobre casino online elegante y no ha transpirado contemporanea cual atiende a personas sobre criptomonedas, ofreciendo la impresionante habilidad de juego en multiples verticales. La revolucionaria medio de dados cripto elimina la urgencia sobre comprobacion sobre modo de ser, permitiendo a las personas comenzar a retar inmediatamente con solo cualquier deposito referente a criptomonedas. Dicha original tarima sobre criptomonedas ofrece algunas tres,100 juegos carente pedir comprobacion sobre modo de ser, lo que una permite ideal para jugadores que quieren total anonimato.<\/p>\n

Desde tragamonedas inclusive juegos con manga larga crupier acerca de presto, se puede accesar a cualquier sencillamente abriendo el buscador<\/h2>\n

El nivel sobre anonimato dentro del utilizar criptomonedas asi\ufffd como apostar referente a sitios de apuestas Bitcoin dependeri? sobre tu. Las criptodivisas se pueden utilizar por dispositivos moviles como cualquier ipad indumentarias tabletas; hasta la mayoria de las monederos calientes deben versiones para iOS desplazandolo hacia el pelo Android. ? Se puede comprobar tu mismo una objetivismo de los novios juegos sobre casino Bitcoin al mi\ufffdnimo instante mediante la tarea provably fair Nuestro esparcimiento con BTC tiene demasiadas prerrogativas, aunque abarca algunas desconveniencias por la esencia de este tipo de ciencia.<\/p>\n

Ciertos casinos cripto ademi?s ofrecen aplicaciones propias, pinceladas si experimentas a menudo o bien quieres mayormente comodidad. Hace el trabajo unicamente en sitios que acepten jugadores de tu villa desplazandolo hacia el pelo asegurate de que no estas incumpliendo alguna restriccion alrededor del registrarte o alrededor usar herrammientas para bici igual que VPN.<\/p>\n","protected":false},"excerpt":{"rendered":"

En caso de que comparamos las criptomonedas con el pasar del tiempo estas alternativas, deben cualquier gran indice con celeridad de sus operaciones, nuestro modo sobre comisiones seri\ufffda inferior y tambien en la eficacia suele acontecer rapida. Nuestro arte seri\ufffda ri?pido y indudablemente, donde el cliente vigila directamente sus dinero\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-6643","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6643","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=6643"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6643\/revisions"}],"predecessor-version":[{"id":6644,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6643\/revisions\/6644"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=6643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=6643"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=6643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}