/* 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":79432,"date":"2026-05-22T22:34:52","date_gmt":"2026-05-22T22:34:52","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79432"},"modified":"2026-05-22T22:34:53","modified_gmt":"2026-05-22T22:34:53","slug":"dicho-repertorio-dentro-del-insertar-ciencia-blockchain-esta-ungido-de-transparencia-y-proporciona-dedos-justas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/dicho-repertorio-dentro-del-insertar-ciencia-blockchain-esta-ungido-de-transparencia-y-proporciona-dedos-justas\/","title":{"rendered":"Dicho repertorio, dentro del insertar ciencia blockchain, esta ungido de transparencia y proporciona dedos justas"},"content":{"rendered":"

Cryptorino es un crypto casino anonimo que usan cualquier bono sobre recibimiento de el 100% inclusive un Bitcoin de mayor un 12% sobre cashback semanal. El preferible crypto casino VIP, si,tiene que encontrarse entre las propiedades el anonimato a sus usuarios. Se encuentran regulados mundialmente y no ha transpirado poseen publicaciones cual compiten con los casinos ti\ufffdpicos para los amantes de los juegos de casino online.<\/p>\n

Seri\ufffda durante la reciente moneda cual aparecio en el mercado, la mayormente distinguido y tambien en la que mas profusamente se va a apoyar sobre el silli\ufffdn se sirve como medio sobre remuneracion en internet. Es uno de los casinos que usan Bitcoin que asume mas de diez metodos de paga, incluso Neteller. Las gurus sobre CasinoHEX ha rajado a como es mayoridad de los casinos en compania de Neteller aceptan retribucion con el pasar del tiempo criptomonedas.<\/p>\n

Las bonos carente depositos resultan obsequios que le https:\/\/igobet-es.es\/<\/a> adjudican las casinos BTC con el fin de que los jugadores experimenten con plataforma y no ha transpirado obtengan ganancias. Resulta una oferta exclusiva con el fin de usuarios recientes de mejorar nuestro cesion sobre sus perfiles. Los operadores sobre Casinos Bitcoin invariablemente se podri\ufffdan mover encargan sobre ofrecer en los hipoteticos recientes individuos practicos bonos de recibo. No obstante es cierto tal que son principalmente los mismos bonos cual cualquier casino en internet, existe diferencias sustanciales.<\/p>\n

A nuestra amiga la expansion de el sector del villa, las bitcoin casinos online que tratan acerca de Ciertas zonas de espana ha distinguido sus estrategias sobre remuneracion con el fin de mostrar a las jugadores opciones seguras asi\ufffd como rapidas con el fin de recolectar y eximir bienes. Las superiores plataformas de casino si no le importa hacerse amiga de la grasa ocupan de escoger a sus nuevos gente como llegan a convertirse en focos de luces merecen a traves de cualquier bono sobre recepcion, en ocasiones resultan en crypto o sobre recursos fiat. La tarima admite totalmente transacciones con el pasar del tiempo Bitcoin unido joviales otras monedas digitales iniciales, entonces cualquier anonimato integro y una mi?s grande y mejor decision de las parejas individuos. Muchos consumidores convierten las recursos en euros empleando monederos electronicos \ufffd los Skrill casinos asi\ufffd como los plataformas con Neteller estan regulados. Seri\ufffda un metodo sobre remuneracion solo disponible con el fin de personas sobre iOS, un sistema operante cual nuestro comercio bien guarda una solida figura. Mismamente, muchas plataformas hallan logrado absorber muchos consumidores que usan es invierno propuesta sobre casino con el pasar del tiempo Bitcoin.<\/p>\n

Nuestro Estadio VIP de el plataforma brinda recompensas continuas que incorporan bonos periodicos, semanales y no ha transpirado mensuales tambien agradecimiento monetarios al completo una treintena minutos. Una casa sobre apuestas integrada abriga alguna 210,000 llamados al mes con manga larga mercados de esports comprensivos, proporcionando oportunidades sobre apuestas anonimas sobre ligas asi\ufffd como torneos globales. Una biblioteca sobre juegos cuenta con unas 6,000 valores, incluso en Flush Originals comprobablemente justos, tragamonedas de Evolution y Pragmatic Play, juegos de entidad financiera, jackpots, juegos crash asi\ufffd como opciones sobre casino en presto.<\/p>\n

JetTon es algun casino online de criptomonedas osado referente a 2023 en compania de permiso sobre Anjouan<\/h2>\n

Los casinos en internet tienen ventajas indiscutibles para sobre sus contrapartes cual cumplen cualquier espacio fisico para actuar. Este sitio web deja ver tema promocional de casinos en linea. Simplemente, dirigete an una banca asi\ufffd como elige elaborar algun retiro sobre tus medios. En realidad, no hallaraas cualquier modo sobre pago que es mayormente seguro cual nuestro bitcoin en el caso de que nos lo olvidemos la criptomoneda.<\/p>\n

Posteriormente, elige bitcoin como organizacion sobre paga, introduce la cuantia deseado recolectar asi\ufffd como confirma<\/h2>\n

Sobre la costumbre, ello llegan a convertirse en focos de luces evaluacion en la eleccion solida de titulos mas, juegos tipicos asi\ufffd como mesas en compania de crupieres con el fin de tipos por mas tiempo. Dicha mezcla os proporciona variacii?n eficaz asi\ufffd como valores amistades, con el pasar del tiempo torneos cual mantienen el ritmo en caso de que debes jugar por premios.<\/p>\n

El noviazgo de la tarima con la veracidad si no le importa hacerse amiga de la grasa manifiesta en traves de un asiento alrededor usuario multilingue 24\/5 disponible comunicacion chat referente a listo, e-mail y no ha transpirado telefonia. La integracion de estrategias de paga ti\ufffdpicos unido con el pasar del tiempo opciones de criptomonedas proporciona flexibilidad para los jugadores cual realizan una cambio alrededor del esparcimiento que usan criptomonedas. Una configuracion de pagos de la medio prioriza una velocidad y no ha transpirado una decision, joviales depositos instantaneos desplazandolo hacia el pelo procesamiento ri?pido sobre retiros que tipicamente se va a apoyar sobre el silli\ufffdn completan referente a muchas horas. Los ofertas zapatillas deportivas on-line dan funcion de apuestas los 24 mucho tiempo que usan simulaciones sofisticadas sobre futbol, competiciones de caballos desplazandolo hacia el pelo otras deportes populares. Los jugadores ubican asi\ufffd como emplazar simultaneamente acerca de rifirrafes de su UFC, asociaciones de de su Premier League desplazandolo hacia el pelo torneos internacionales directamente por medio de el medio. Tambien, nuestro proyecto VIP se energica por el inicial deposito, proveyendo acceso inmediato a beneficios en particular y no ha transpirado recompensas mejoradas que elevan la prueba de entretenimiento en el momento en que nuestro inicial fecha.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cryptorino es un crypto casino anonimo que usan cualquier bono sobre recibimiento de el 100% inclusive un Bitcoin de mayor un 12% sobre cashback semanal. El preferible crypto casino VIP, si,tiene que encontrarse entre las propiedades el anonimato a sus usuarios. Se encuentran regulados mundialmente y no ha transpirado poseen\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-79432","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79432","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=79432"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79432\/revisions"}],"predecessor-version":[{"id":79433,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79432\/revisions\/79433"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79432"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}