/* 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":72288,"date":"2026-05-22T22:03:42","date_gmt":"2026-05-22T22:03:42","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=72288"},"modified":"2026-05-22T22:03:43","modified_gmt":"2026-05-22T22:03:43","slug":"para-jubilar-los-ganancias-por-usando-bono-debemos-colocar-50-veces-nuestro-importe-agrupado","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/para-jubilar-los-ganancias-por-usando-bono-debemos-colocar-50-veces-nuestro-importe-agrupado\/","title":{"rendered":"Para jubilar los ganancias por usando bono, debemos colocar 50 veces nuestro importe agrupado"},"content":{"rendered":"

Es una manera segura sobre introducirse sobre la practica de el casino online Espana bono desprovisto deposito y no ha transpirado, acerca de seguimiento, podri\ufffda ser ganar algo de recursos cierto al transcurso. Si, para ello unico deberias cumplir nuestro condicion sobre puesta (rollover) propuesto debido al casino en internet en donde te registraste. Son aquellos bonos sobre casino cual no requieren algun deposito anterior de ser activados, y por lo general se va a apoyar sobre el silli\ufffdn entregan como algun agasajo de recepcion a seres registrados sobre un casino en internet. Aunque los bonos de casino sin tanque nunca resultan excesivamente comunes, si es posible encontrarlos asi\ufffd como sacarles nuestro maximum afan.<\/p>\n

Los ganancias obtenidas estaran sujetas en algun exigencia sobre apuesta sobre 30 veces en obtener ser retiradas. Solo se podri\ufffdan mover podran utilizar en caso de que posees venta jugable, y tendras que utilizar todas las tiradas suin participar que usan traspaso cierto. Nuestro exigencia de puesta seri\ufffda $ 50 ocasiones nuestro importe sobre cada bono de descargar recursos. Juegging representa cualquier bono sobre admision de juegos sobre ruleta referente a 10\ufffd falto necesidad de tanque y no ha transpirado un 300% incluso 150\ufffd sobre el primer inscripcion.<\/p>\n

El exigencia sobre postura (rollover o bien wagering) es el corazon de el bono. En caso de que cumples a lapso, se cancela nuestro cesion promocional, y no ha transpirado muchas veces ademas se podri\ufffdan mover anulan ganancias ligadas del bono.<\/p>\n

Nuestro bono desprovisto deposito de 888sport Ciertas zonas de espana es una propaganda de audiencia que brinda 12\ufffd referente a apuestas de balde del registrarte para inicial ocasion, sin necesidad sobre efectuar algun deposito. Absolutamente si; Ademi?s, los jugadores que llevan a un casino en internet gratuito carente deposito por algun dispositivo ipad acostumbran a obtener https:\/\/casinogranviacasino.com\/<\/a> promociones de casino en internet carente deposito y no ha transpirado ofertas exclusivas mas profusamente original. Ello dependeri? para Terminos y no ha transpirado Esencia aplicados a este bono carente deposito. Por lo tanto, sientete disponible sobre encaminarse tus mismas elecciones en caso de que la descuento no seri\ufffda lo perfectamente de ti despues de todo. Ademi?s leeras sobre como situar del casino referente a avispado desplazandolo hacia el pelo elaborar torcer los maquinas tragamonedas.<\/p>\n

Cristalino, los bonos sobre casino con el pasar del tiempo tanque dentro del casino quiere decir un gran relaciones cual no realizarlo, sin embargo las beneficios obtenidos an intercambio en excelente condicion fisica de bonos sobre recibimiento podran desquitar felicidad funcion. Y no ha transpirado podri\ufffda ser pero algun bono desprovisto deposito nunca te diga que otorga tiradas de balde per si no le importa hacerse amiga de la grasa (lo cual te ofrece es recursos contante asi\ufffd como sonante para comenzar sobre la patologi\ufffda del tunel carpiano casino), en el meta asi\ufffd como del mango lo cual son tiradas gratuito carente deposito sin haber que colocar un unicamente euro, unico para registrarte. Hasta si posees suerte desplazandolo hacia el pelo logras ganancias considerables, es importante ser conscientes que la generalidad de casinos joviales bonos sin deposito incluyen limites de retiro para garantizar cualquier entretenimiento justo. Si es cualquier bono sin deposito arquetipico, podrias utilizar los bienes del entretenimiento cual hagas. Hasta en caso de que nunca has jugado acerca de un casino en internet, podras ver cual beneficiarse las bonos falto tanque no nos referimos a nada dificil. Sobre estas publicaciones, te otorgaran una serie de giros desprovisto costo, generalmente entre 12 asi\ufffd como 100, cual podras utilizar acerca de la maquina tragamonedas.<\/p>\n

En Ciertas zonas de espana, metodos habituales incluyen Salvoconducto, Mastercard, PayPal, Bizum, Trustly, Skrill, Neteller desplazandolo hacia el pelo Paysafecard<\/h2>\n

Inclusive mismamente, para acontecer accesorio del entretenimiento responsable, atane cual leas los terminos asi\ufffd como condiciones que maneja nuestro casino online usando cual te pondran jugando las apuestas. Enteran cuales son las principales inquietudes de los jugadores sobre juegos de chiripa sobre los bonos falto deposito sobre los casinos online espanoles. Entonces, continuamente promovemos un entretenimiento responsable, saltando sobre casinos online confiables, donde los juegos gratuito desplazandolo hacia el pelo bonos falto tanque serian fiables, verificados asi\ufffd como certificados por jugadores con experiencia y licencias como una DGOJ; mismamente te pondran mas confiado en el momento de situar. Su de mencionarte las maneras sobre explorar algun casino en internet sobre Espana, es para que los recientes jugadores no caigan referente a trampas que logren decepcionarte de el universo de estas apuestas. Envite siempre por cualquier juego ceremonioso, divertirte sobre algun casino debe acontecer indudablemente para ti y no ha transpirado de mayor en caso de que posee bono gratuito referente a los juegos con tragamonedas.<\/p>\n

Esto seria cualquier rotundo sobre un<\/h2>\n

En lanzarte a requerir algunos de los mejores bonos sobre casino, os vendran debido a algunas sugerencias para comenzar con el pasar del tiempo buena pata su aventura. 000\ufffd (50?20) que deberas poner acerca de juego referente a un plazo sobre 8 momentos con el fin de conseguir retirar las ganancias. Si aun tendri\ufffdas preguntas la manera sobre como hacen el trabajo bien las mejores bonos de casino, entonces voy a ponerte un ej util para que lo entiendas conveniente. Los ofertas sobre bonos sobre casino generalmente son para slots, aunque os sugiero echarse atencii?n a la pagina continuamente de saber en caso de que han nacido una diferente publicidad de aquellos juegos.<\/p>\n","protected":false},"excerpt":{"rendered":"

Es una manera segura sobre introducirse sobre la practica de el casino online Espana bono desprovisto deposito y no ha transpirado, acerca de seguimiento, podri\ufffda ser ganar algo de recursos cierto al transcurso. Si, para ello unico deberias cumplir nuestro condicion sobre puesta (rollover) propuesto debido al casino en internet\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-72288","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72288","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=72288"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72288\/revisions"}],"predecessor-version":[{"id":72289,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72288\/revisions\/72289"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=72288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=72288"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=72288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}