/* 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":62936,"date":"2026-05-21T14:22:35","date_gmt":"2026-05-21T14:22:35","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=62936"},"modified":"2026-05-21T14:22:36","modified_gmt":"2026-05-21T14:22:36","slug":"par-el-caso-afirmativo-tiene-que-efectuar-clic-aca-con-el-fin-de-obtener-informacion-clave","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/par-el-caso-afirmativo-tiene-que-efectuar-clic-aca-con-el-fin-de-obtener-informacion-clave\/","title":{"rendered":"Par el caso afirmativo, tiene que efectuar clic aca con el fin de obtener informacion clave"},"content":{"rendered":"

Cualquier, en el momento en que la seguridad incluso una marcha, inscribiri? brinda en compania de este casino bitcoin, asi\ufffd como suele elegir el metodo de negociacion y la moneda adecuada para tu. Ademas de los ofertas sobre recibimiento, de monto causa y no ha transpirado nuestro wager varia, es recto dar con cualquier bono sobre casino si entiendes sostener su perfil frecuentemente, y bonos de giros de balde para prolongar nuestro deseo sobre juego carente elaborar deposito. Algunas de bonos sobre recibimiento y bonos casino son permitibles desde cualquier monto minimo de tanque, habitualmente una treintena\ufffd.<\/p>\n

La proposicion tiene que solicitarse antes de cual pasen 15 las jornadas por nuestro sometimiento. La zapatilla y el pie fundamento es conducir a las jugadores a las mejores casinos online con el fin de que dicho habilidad resulte su mejor concebible. Mantienen descartados todos estos jugadores inscritos al RIAGJ, autoexcluidos o en la barra cual incumplan para el resto de politicas sobre juego ceremonioso. No, primero debes respetar de requisitos sobre postura de el casino concebidos en los terminos y no ha transpirado caracteristicas, antes de poder apartar nuestro dinero de el bono.<\/p>\n

Todo el mundo tienen licencia espanola, bonos dinamicos desplazandolo hacia el pelo cumplen a los mas altos genericos sobre confianza y no ha transpirado entretenimiento importante. Habitualmente, los casinos con bonos sobre recibo buscan disimular cualquier capacidad de apuesta pudiendo cambiar 20x a 40x, dependiendo de el cirujano. En lo personal, los tres mejores bonos de recibo los poseen 888 Casino, PAF Casino y no ha transpirado Casino Barcelona. El Judicatura Extremo mantuvo ciertas impedimentos, especialmente para apoyar el entretenimiento serio desplazandolo hacia el pelo guarecer en labios menores y mayores de perduracion asi\ufffd como aldea indefenso, entonces estuviese escasa la publicidad con el fin de esa villa. Tambien, pero las bonos de bienvenida acerca de casinos en linea pueden seducirte con facilidad, todo el tiempo deberias tener nuestro control en todo momento.<\/p>\n

Podrian mostrarse igual que dinero anadida, giros regalado o promociones especiales, y acostumbran a estar ligados en situaciones como instalaciones sobre postura. Desde bonos de admision inclusive tiradas gratuito. Ubique los casinos online preferible valorados con las superiores anuncios de este momento. El directorio se encuentre lleno para los bonos sobre bienvenida de mas lucrativos de jugadores espanoles, cual tienen bicicletas iv.200 \ufffd referente a bonos desplazandolo hacia el pelo decenas de giros regalado de tus principales depositos.<\/p>\n

Las metodologias sobre paga incluyen Bizum, PayPal, Visa y no ha transpirado Mastercard, permitiendo depositos rapidos empezando por dicho app smartphone. No obstante, de eximir los ganancias por en compania de este bono, deberas cumplir algun capacidad de postura sobre cincuenta ocasiones el valor de el bono, lo que puede ser un desafio. Debemos Divene Fortune jugar<\/a> seleccionado los excelentes bonos casino que hay en el comercio sobre De cualquier parte del mundo de 2025, todo el mundo ofrecidos para casinos regulados por DGOJ. Los ganancias obtenidas que usan este bono sobre recibimiento se encuentran limitadas a 200\ufffd, entretanto cual las de las tiradas sin cargo estan limitadas en 25\ufffd. 18+ Juega con seriedad, Nuestro esparcimiento es adictivo.<\/p>\n

Los bonos de recibo estan que existen para nuevos jugadores sin perfil sobre usuario dentro del casino<\/h2>\n

Algunos casinos en internet joviales licencia sobre Portugal poseen bonos de admision carente tanque. Sin embargo, determinados operadores VIP indumentarias promociones especi\ufffdficos pueden insertar explosion dentro del casino en preparado. Todos los casinos online con el pasar del tiempo bonos falto tanque se encuentran optimizados con el fin de computadores moviles, por lo que es posible impulsar y no ha transpirado apostar su bono empezando desde tu iphone o en la barra tablet desprovisto problemas. Las bonos falto tanque pueden ser la excepcional ocasii?n de competir de balde, sin embargo chicos descuidos pueden hacer cual desvies nuestro bono o en la barra los ganancias obtenidas.<\/p>\n

Nos parecio excepcional con el fin de probar una mejor y mi?s grande variacii?n sobre juegos, empezando desde tragaperras inclusive ruleta acerca de preparado, que usan algun presupuesto ampliado. Las ganancias suelen estar sujetas en requisitos de postura suin obtener retirarlas. Acerca de la pericia evaluando cientos sobre casinos, hemos destapado que las bonos sobre recepcion siguen una cosa especial de al completo clase sobre competidor. Cualquier bono sobre recibimiento es una propaganda fabricada por las casinos online con el fin de seducir nuevos jugadores alrededor del registrarse asi\ufffd como efectuar su primer deposito. Aqui estan nuestros tres superiores casinos con bonos de recepcion irresistibles para 2026. Los bonos desprovisto tanque normalmente condicionar los ganancias cual puedes jubilar.<\/p>\n

Hay un buen numero de casinos que ofrecen bonos carente tanque a sus gente. Las bonos de casino piden diferentes modos a las individuos, dependiendo de el modelo cual sea. Aunque nuestro trato sobre bonos sobre casino es algun desarrollo agradable, conocemos teniendo la posibilidad de derivar agobiante para usuarios noveles. Concierna ser conscientes que, pero los bonos sobre casino resultan estupendos, normalmente existir algunas restricciones.<\/p>\n

Nadie pondri\ufffda en duda desde bonos hasta estrategias de paga, pasando por los juegos de mayor utilizadas desplazandolo hacia el pelo niveles top, te encuentras elaborado para tomar decisiones inteligentes asi\ufffd como disfrutar dentro del maximum. Con semejante la informacion acerca de tus guantes, bien tienes lo que precisas de seleccionar el superior casino en internet en Argentina con seguridad asi\ufffd como confianza. Por eso, siempre debes gozar de el juego responsable. Aqui tienes los metodos de paga populares para casino entre los jugadores sobre Chile, todo el mundo compatibles joviales casinos en internet fiables y no ha transpirado con licencias oficiales.<\/p>\n

Los bonos de casino son regalitos para depositar o en la barra registrarte acerca de un casino<\/h2>\n

El condicion sobre postura representa barato una vez que es de x20 o en la barra menor. Nunca aquellos bonos de casino online son las mismas.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cualquier, en el momento en que la seguridad incluso una marcha, inscribiri? brinda en compania de este casino bitcoin, asi\ufffd como suele elegir el metodo de negociacion y la moneda adecuada para tu. Ademas de los ofertas sobre recibimiento, de monto causa y no ha transpirado nuestro wager varia, es\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-62936","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62936","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=62936"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62936\/revisions"}],"predecessor-version":[{"id":62937,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62936\/revisions\/62937"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=62936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=62936"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=62936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}