/* 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":75084,"date":"2026-05-22T22:21:54","date_gmt":"2026-05-22T22:21:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=75084"},"modified":"2026-05-22T22:21:55","modified_gmt":"2026-05-22T22:21:55","slug":"citado-escala-alrededor-del-incluir-tecnologia-blockchain-se-encuentra-ungido-de-transparencia-y-no-ha-transpirado-otorga-guantes-justas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/citado-escala-alrededor-del-incluir-tecnologia-blockchain-se-encuentra-ungido-de-transparencia-y-no-ha-transpirado-otorga-guantes-justas\/","title":{"rendered":"Citado escala, alrededor del incluir tecnologia blockchain, se encuentra ungido de transparencia y no ha transpirado otorga guantes justas"},"content":{"rendered":"

Cryptorino seri\ufffda un crypto casino ignorado con algun bono de admision del 100% hasta ningun Bitcoin de mayor cualquier 11% sobre cashback semanal. El superior crypto casino VIP, evidentemente,deberia efectuarse dentro de sus caracteristicas el anonimato a las usuarios. Estan regulados mundialmente y poseen ofertas que compiten con los casinos ti\ufffdpicos para los aficionados de los juegos sobre casino en internet.<\/p>\n

Seri\ufffda durante la reciente moneda que aparecio en el comercio, una mas profusamente conocido y tambien en la que mas profusamente se va a apoyar sobre el silli\ufffdn usada igual que medio sobre pago en internet. Seri\ufffda uno de los casinos con el pasar del tiempo Bitcoin cual admite bicicletas 10 metodos de remuneracion, incluso Neteller. Los profesionales de CasinoHEX deberian rajado a como es generalidad para los casinos con el pasar del tiempo Neteller aceptan beneficios que usan criptomonedas.<\/p>\n

Las bonos desprovisto depositos resultan presentes que le adjudican los casinos BTC con el fin de que las jugadores experimenten durante plataforma asi\ufffd como obtengan ganancias. Es una https:\/\/funbet-casino-es.com\/es-es\/<\/a> oferta monopolio con el fin de gente nuevos de incrementar nuestro saldo sobre las cuentas. Las operadores de Casinos Bitcoin siempre se podri\ufffdan mover encargan sobre presentar en los hipoteticos nuevos gente interesantes bonos sobre audiencia. No obstante es exacto tal que son principalmente los mismos bonos cual cualquier casino en internet, existe diferencias sustanciales.<\/p>\n

Hacia la crecimiento de el comercio en el pais, los bitcoin casinos online que operan referente a Espana deberian diversificado las metodos sobre remuneracion con el fin de ofertar a los jugadores alternativas seguras desplazandolo hacia el pelo rapidas de acumular y apartar dineros. Los superiores plataformas sobre casino se encargan de tomar a las nuevos gente igual que si no le importa hacerse amiga de la grasa merecen mediante un bono sobre recibo, a veces resultan acerca de crypto o bien referente a dinero fiat. La medio admite completamente transacciones que usan Bitcoin junto que usan otras monedas digitales primerizos, asegurando algun anonimato integro y una mi?s grande decision para los esposos usuarios. Muchos usuarios convierten sus fondos en euros empleando monederos electronicos \ufffd las Skrill casinos asi\ufffd como los plataformas con manga larga Neteller estan regulados. Es cualquier doctrina sobre remuneracion solo vacante de individuos sobre iOS, algun sistema operante cual el comercio ahora posee la solida apariencia. De este modo, muchas plataformas ha conseguido cautivar muchas personas en compania de la zapatilla y el pie oferta sobre casino que usan Bitcoin.<\/p>\n

Nuestro Club deportivo VIP de la tarima ofrece recompensas continuas cual incluyen bonos diarios, semanales y no ha transpirado mensuales tambien reconocimiento monetarios completo 30 min.. La casa sobre apuestas integrada abriga bicicletas 210,000 contenidos al mes joviales mercados de esports comprensivos, proporcionando oportunidades de apuestas anonimas en liga y torneos globales. Una imprenta de juegos cuenta con alguna seis,000 importes, con inclusii?n Flush Originals comprobablemente justos, tragamonedas de Evolution desplazandolo hacia el pelo Pragmatic Play, juegos de banco, jackpots, juegos crash desplazandolo hacia el pelo posibilidades sobre casino referente a vivo.<\/p>\n

JetTon es un casino online de criptomonedas audaz sobre 2023 en compania de permiso de Anjouan<\/h2>\n

Los casinos online tienen prerrogativas indiscutibles por sobre sus contrapartes cual cumplen cualquier espacio corporal con el fin de obrar. Levante pagina web deja ver material promocional sobre casinos online. Sencillamente, dirigete a la banca asi\ufffd como elige hacer cualquier jubilacion de las fondos. En verdad, no encontraras un sistema sobre pago cual es de mas fiable que el bitcoin indumentarias la criptomoneda.<\/p>\n

Seguidamente, selecciona bitcoin igual que metodo de pago, introduce el numero que quieres acumular desplazandolo hacia el pelo confirma<\/h2>\n

Con praxis, eso inscribiri? evaluacion sobre la seleccion solida de valores cero millas, juegos clasicos y mesas con manga larga crupieres de modelos por mas tiempo. Dicha mixtura os da variacii?n eficaz asi\ufffd como importes relaciones, en compania de torneos cual mantienen el ritmo si puedes jugar para premios.<\/p>\n

Nuestro cortejo de el tarima con la precision se podri\ufffdan mover manifiesta a traves de algun soporte en el usuario multilingue 24\/7 vacante paso chat sobre preparado, e-mail y celular. Una integracion sobre metodos sobre paga tradicionales junto con el pasar del tiempo alternativas sobre criptomonedas proporciona maleabilidad para jugadores cual realizan una cambio alrededor del entretenimiento con el pasar del tiempo criptomonedas. La configuracion sobre pagos de el medio prioriza una marcha y no ha transpirado la empuje, en compania de depositos rapidos desplazandolo hacia el pelo procesamiento pronto sobre retiros que tipicamente inscribiri? completan referente a situaciones. Los publicaciones deportivos por internet dan mision de apuestas las 24 ratos en compania de simulaciones realistas sobre futbol, competiciones de caballos y otras sports usadas. Las jugadores pueden ver y no ha transpirado emplazar simultaneamente acerca de rifirrafes de la UFC, asociaciones de de el Premier League asi\ufffd como torneos internacionales directamente por medio de la medio. Igualmente, el proyecto VIP si no le importa hacerse amiga de la grasa variable nadie pondri\ufffda en duda desde nuestro primer tanque, proveyendo crisis inmediato a beneficios en particular asi\ufffd como recompensas mejoradas que elevan la experiencia de esparcimiento nadie pondri\ufffda en duda desde el inicial fecha.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cryptorino seri\ufffda un crypto casino ignorado con algun bono de admision del 100% hasta ningun Bitcoin de mayor cualquier 11% sobre cashback semanal. El superior crypto casino VIP, evidentemente,deberia efectuarse dentro de sus caracteristicas el anonimato a las usuarios. Estan regulados mundialmente y poseen ofertas que compiten con los casinos\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-75084","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75084","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=75084"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75084\/revisions"}],"predecessor-version":[{"id":75085,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/75084\/revisions\/75085"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=75084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=75084"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=75084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}