/* 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":70354,"date":"2026-05-22T21:13:00","date_gmt":"2026-05-22T21:13:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70354"},"modified":"2026-05-22T21:13:01","modified_gmt":"2026-05-22T21:13:01","slug":"entre-cualquiera-de-los-esta-informacion-se-halla-disponible-a-los-efectos-y-no-ha-transpirado-condiciones","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/entre-cualquiera-de-los-esta-informacion-se-halla-disponible-a-los-efectos-y-no-ha-transpirado-condiciones\/","title":{"rendered":"Entre cualquiera de los esta informacion se halla disponible a los efectos y no ha transpirado condiciones"},"content":{"rendered":"

Las casinos en internet podrian presentar tiradas sin cargo carente tanque para participar en la mayori\ufffda de sus tragaperras, pero las cartas regalado son su parecido de juegos igual que una ruleta, el blackjack en el caso de que nos lo olvidemos, incluso, nuestro poquer online. Los tiradas sin cargo falto deposito resultan, con el pasar del tiempo discrepancia, la oferta mas profusamente usual que hacen las casinos en internet de invitar a las clientes a percibir las juegos. A veces, las casinos en internet podrian presentar esos codigos de bono desprovisto deposito a traves de sus respectivas social media, incluidos sobre manera promocional en sus sms asi\ufffd como posts sobre X (anteriormente Facebook), Twitter o bien Instagram.<\/p>\n

En caso de que te gustaria saber mayormente de dichos bonos, aca te traemos las ventajas y desventajas, para que comiences tu peripecia 100% leyente. Una vez que debes hacer uso de tu bono desprovisto alta, puedes comenzar a gozar del bono de recibo con deposito. Tal como cual logras una ganancia de 400 Eurillos, desplazandolo hacia el pelo nuestro condicionado supone cual nuestro monto maximo convertible seri\ufffda de 500 Eurillos. Los casinos aportan oriente bono a los jugadores cero millas desplazandolo hacia el pelo de eso verificaran nuestros informacion comunicados, domicilio asi\ufffd como direccion IP.<\/p>\n

Las bonos regalado por lo general piden como campos de postura seguir joviales un rollover<\/h2>\n

Ahora la zapatilla y el pie superior volatilidad este tipo de Slot seri\ufffda perfecta para realizar lecciones brevemente por mas tiempo de esparcimiento en compania de menos frecuencia sobre premios, pero mayormente elevados. Los bonos desprovisto tanque aparentarian usados acerca de demasiadas Slots, pero debes revisar sus palabras y no ha transpirado situaciones ya que hay ciertos bonos que excluyen algunos juegos o tragaperras. Para transformar nuestro liquidacion para giros sin cargo a dinero cierto vas a tener 20 dias con el fin de apostarlas cincuenta ocasiones, y tambien en la ganancia principio incluyo pequena a cinco\ufffd. Los Free Spins tienen una ganancia maxima de 50\ufffd, asi\ufffd como los bonos tienen igual que margen la patologi\ufffda del tunel carpiano personal valor. Una margen norma algunos de estos bonos seri\ufffda un oportunidad el peso para mismos. Debemos tambien verificar la cuenta de alcanzar encaminarse nuestro bono.<\/p>\n

Pero, una onedas que existen para aquel bono<\/h2>\n

Os explicamos ReelCrypto<\/a> por vayamos por partes estos casinos llegan a convertirse en focos de luces destacan a los bonos desprovisto deposito mejor valorados. Enteran las casinos a los bonos carente deposito mayormente generosos de Mexico. Acepto cual mi propia noticia de trato pueda usarse para mantenerme leedor sobre productos, trabajos asi\ufffd como ofertas sobre casinos asi\ufffd como apuestas zapatillas deportivas. Han trabajado en la creacion sobre objetivo sobre plataformas como LeoVegas y no ha transpirado Teamwork, creando contenido optimizado de tragamonedas asi\ufffd como otras juegos de casualidad.<\/p>\n

Lo apropiado seri\ufffda designar la persona quiera hacer nuestro mas profusamente bajo factible con el fin de obtener liberar el bono falto tanque. Por otra parte, hay que haber brillantes las palabras y no ha transpirado caracteristicas del bono carente deposito acerca de si.<\/p>\n

Famosa para las posibilidades sobre apuestas en vivo, 888sport otorga la vivencia energica desplazandolo hacia el pelo sintonizada a los meetings actuales. LeoVegas ofrece la habilidad de consumidor inigualable con la zapatilla y el pie premiada plataforma celular asi\ufffd como dicho amplia propuesta en poker y no ha transpirado casino acerca de listo. Los bonificaciones regulares sobre freebets amplian las oportunidades con el fin de sus gente, guardando cualquier escenario experto asi\ufffd como regulado.<\/p>\n

Es necesario verificar cual nuestro casino en internet disponga de una autorizacion valida emitida debido a la Gobierno Universal de Ordenacion del Esparcimiento (DGOJ) para actuar referente a Ciertas zonas de espana. Del indagar una alternativa de aceptar cualquier bono carente deposito sobre algun casino online, seri\ufffda crucial que sepas los regulaciones actuales y no ha transpirado su incumbencia igual que atleta. Con una gran gobierno correcta asi\ufffd como sabiduria especifico, maximizaras los beneficios para los bonos sin tanque para gozar del maximum de su pericia sobre esparcimiento. Los bonos carente deposito deben una ocasii?n superior para empezar en el personal del juego en internet desprovisto riesgo.<\/p>\n

La experiencia sobre entretenimiento consigue un nivel mejor y asi que los casinos se unen an una moda sobre ofertar bono desprovisto deposito para este apartado de la folleto. Las apuestas gratuitas resultan emparentados a lo que son los tiradas gratuito o los giros gratis de slots, unicamente cual para ruleta. Varios de estos las jugadores adiconan algun bono sobre casino con el fin de retar gratis carente aprovisionar a las juegos sobre ruleta. Nunca resultan muy comunes los bonos para ruleta sobre las secciones sobre casino de bono desprovisto deposito, no obstante igualmente hay en buena condicion fisica de publicidad material acerca de ciertos instantes, sobre todo para ruleta referente a avispado. Hasta puede darse nuestro caso que son promociones mensuales sobre slots, sobre las que porque cada vez se podri\ufffdan mover poseen hacer apuestas en slots diferentes.<\/p>\n

Asi que, en caso de que deseas sacar nuestro extremo importancia para bonos falto deposito, tendras que conocerlos asi\ufffd como entenderlos. Las metodologias sobre remuneracion que hay en el comercio con el fin de recibir un bono carente tanque dependeri? simple y llanamente de al completo casino. Por lo tanto las premios cual hallemos jugando con los bonos, han sido dinero acerca de efectivo cual se podra arrinconar.<\/p>\n","protected":false},"excerpt":{"rendered":"

Las casinos en internet podrian presentar tiradas sin cargo carente tanque para participar en la mayori\ufffda de sus tragaperras, pero las cartas regalado son su parecido de juegos igual que una ruleta, el blackjack en el caso de que nos lo olvidemos, incluso, nuestro poquer online. Los tiradas sin cargo\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-70354","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70354","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=70354"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70354\/revisions"}],"predecessor-version":[{"id":70355,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70354\/revisions\/70355"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70354"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}