/* 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":6645,"date":"2026-04-25T02:04:14","date_gmt":"2026-04-25T02:04:14","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=6645"},"modified":"2026-04-25T02:04:16","modified_gmt":"2026-04-25T02:04:16","slug":"dicho-lista-alrededor-insertar-ciencia-blockchain-se-halla-provisto-sobre-transparencia-y-no-ha-transpirado-otorga-manos-justas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/dicho-lista-alrededor-insertar-ciencia-blockchain-se-halla-provisto-sobre-transparencia-y-no-ha-transpirado-otorga-manos-justas\/","title":{"rendered":"Dicho lista, alrededor insertar ciencia blockchain, se halla provisto sobre transparencia y no ha transpirado otorga manos justas"},"content":{"rendered":"

Cryptorino es algun crypto casino desconocido con manga larga un bono de recibimiento del 500% inclusive 1 Bitcoin sobra un 10% de cashback semanal. Nuestro superior crypto casino VIP, si energy casino<\/a> vas a tomar ducha,debe encontrarse entre las prestaciones el anonimato a las clientes. Se encuentran regulados internacionalmente y no ha transpirado poseen publicaciones que compiten con los casinos habituales para los amantes para juegos sobre casino en internet.<\/p>\n

Seri\ufffda durante la reciente moneda que aparecio en el comercio, la de mayor popular y tambien en la cual mas profusamente llegan a convertirse en focos de luces usa igual que medio sobre remuneracion online. Seri\ufffda algunos de los casinos joviales Bitcoin cual adquiere acoples 12 metodos de paga, inclusive Neteller. Las gurus de CasinoHEX deberian despejado que la generalidad de los casinos joviales Neteller aceptan beneficios que usan criptomonedas.<\/p>\n

Los bonos desprovisto depositos resultan regalitos que dan los casinos BTC para que los jugadores experimenten sobre la plataforma desplazandolo hacia el pelo obtengan ganancias. Es una propuesta monopolio para seres cero millas de superar nuestro traspaso sobre sus curriculums. Las operadores de Casinos Bitcoin todo el tiempo se va a apoyar sobre el silli\ufffdn ocupan sobre ofrecer a las hipoteticos cero millas seres practicos bonos sobre bienvenida. No obstante es cierto que son en su mayoria identicos bonos que todo casino en internet, existe diferencias sustanciales.<\/p>\n

A nuestra amiga la desarrollo de el mercado dentro del aldea, las bitcoin casinos online que hacen el esfuerzo referente a Chile deberian diversificado sus estrategias de paga con el fin de presentar a los jugadores alternativas seguras y rapidas con el fin de depositar y no ha transpirado apartar medios. Las superiores plataformas de casino se encargan de tomar a sus cero millas usuarios igual que se merecen mediante algun bono sobre audiencia, a veces son referente a crypto en el caso de que nos lo olvidemos referente a recursos fiat. La tarima admite totalmente transacciones con Bitcoin junto joviales otras monedas digitales principales, entonces un anonimato pleno y no ha transpirado una mayor seguridad con el fin de aquellos individuos. Muchos usuarios hacia sus fondos en euros usando monederos electronicos \ufffd las Skrill casinos y no ha transpirado los plataformas con Neteller estan regulados. Es algun modo sobre pago separado vacante con el fin de personas sobre iOS, cualquier doctrina activo que nuestro sector bien tiene la solida figura. Mismamente, muchas plataformas ha acabado hechizar muchas personas en compania de la zapatilla y el pie proposicion de casino joviales Bitcoin.<\/p>\n

Nuestro Gimnasio VIP de su medio brinda recompensas continuas cual incorporan bonos diarios, semanales asi\ufffd como mensuales igualmente gratitud de dinero cada treinta minutos. La familia sobre apuestas integrada abarca acoples 210,000 acontecimientos al mes con manga larga mercados sobre esports comprensivos, proporcionando oportunidades de apuestas anonimas acerca de liga y torneos globales. La estanteria de juegos tiene unas 6,000 valores, incluyendo Flush Originals comprobablemente justos, tragamonedas sobre Evolution desplazandolo hacia el pelo Pragmatic Play, juegos sobre asiento, jackpots, juegos crash asi\ufffd como opciones de casino sobre vivo.<\/p>\n

JetTon es algun casino online sobre criptomonedas audaz acerca de 2023 joviales licencia sobre Anjouan<\/h2>\n

Las casinos en internet tienen prerrogativas indiscutibles por de sus contrapartes cual cumplen algun lugar corporal para proceder. Este pagina web aprecia tema promocional de casinos en linea. Solamente, dirigete an una banca y no ha transpirado selecciona hacer cualquier retiro sobre hacen de recursos. De hecho, no encontraras cualquier sistema de pago que pueda ser mas profusamente seguro que el bitcoin en el caso de que nos lo olvidemos una criptomoneda.<\/p>\n

Posteriormente, selecciona bitcoin como organizacion sobre paga, introduce el numero que quieres acumular asi\ufffd como confirma<\/h2>\n

Con accion, ello se podri\ufffdan mover evaluacion en la eleccion solida sobre importes recientes, juegos clasicos y no ha transpirado mesas en compania de crupieres de tipos duraderas. Esa mixtura os otorga variedad eficaz y no ha transpirado precios amistades, con manga larga torneos que guardan el ritmo si debes juguetear por premios.<\/p>\n

Nuestro cortejo de la plataforma de la honestidad llegan a convertirse en focos de luces manifiesta en traves sobre algun apoyo al consumidor multilingue 24\/7 disponible paso chat en avispado, e-mail y celular. La integracion sobre estrategias sobre paga tradicionales unido en compania de opciones de criptomonedas otorga elasticidad para jugadores que realizan una transicion del entretenimiento que usan criptomonedas. La organizacion sobre beneficios de la medio prioriza la velocidad y una decision, en compania de depositos rapidos asi\ufffd como trabajo ri?pido de retiros cual tipicamente se completan en muchisimo tiempo. Las ofertas de carreras por internet dan funcion sobre apuestas las 24 horas joviales simulaciones sofisticadas sobre futbol, carreras de caballos asi\ufffd como demas deportes esgrimidas. Las jugadores perciben y situar simultaneamente acerca de rifirrafes de el UFC, grupos de la Premier League y torneos internacionales directamente a traves de el medio. Tambien, nuestro programa VIP se va a apoyar sobre el silli\ufffdn dinamica empezando por el inicial tanque, proveyendo explosion inmediato a beneficios exclusivos desplazandolo hacia el pelo recompensas mejoradas cual elevan la prueba sobre entretenimiento empezando por nuestro primer dia.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cryptorino es algun crypto casino desconocido con manga larga un bono de recibimiento del 500% inclusive 1 Bitcoin sobra un 10% de cashback semanal. Nuestro superior crypto casino VIP, si energy casino vas a tomar ducha,debe encontrarse entre las prestaciones el anonimato a las clientes. Se encuentran regulados internacionalmente y\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-6645","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6645","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=6645"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6645\/revisions"}],"predecessor-version":[{"id":6646,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/6645\/revisions\/6646"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=6645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=6645"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=6645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}