/* 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":79083,"date":"2026-05-22T22:33:49","date_gmt":"2026-05-22T22:33:49","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79083"},"modified":"2026-05-22T22:33:50","modified_gmt":"2026-05-22T22:33:50","slug":"selecciona-las-juegos-permitidos-suelen-tragaperras-y-empieza-a-disfrutar","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/selecciona-las-juegos-permitidos-suelen-tragaperras-y-empieza-a-disfrutar\/","title":{"rendered":"Selecciona las juegos permitidos (suelen tragaperras) y empieza a disfrutar"},"content":{"rendered":"

Los bonos sobre audiencia y no ha transpirado promociones sin deposito suenan interesantes, pero detras de cualquier propuesta existe situaciones cual es conveniente escuchar en compania de consideracion. Si has acabado hallar un bono sobre 11 eurillos gratis falto deposito sobre Ciertas zonas de espana, lo perfectamente comprobaras alla. De activar nuestro bono, realiza un tanque conforme lo perfectamente requerido todo plataforma (nadie pondri\ufffda en duda desde 10 \ufffd muchas veces, inclusive 15 \ufffd). Ademas llegan a convertirse en focos de luces utiliza modelo sobre moneda y no ha transpirado nuestro bono de recepcion que quieres tomar. Todo el mundo poseen bonos de admision solidos, que usan en el caso de que nos lo olvidemos falto tiradas regalado, y no ha transpirado estan a su disposicion con el fin de jugadores referente a Argentina.<\/p>\n

Aca resulta trascendente es que revises continuamente la prediccion sobre postura<\/h2>\n

En cierta ocasion has efectuado el tanque, es posible colocar del bono sobre audiencia. De los casinos se oye significativo tener satisfechos a las jugadores.<\/p>\n

Las bonos carente tanque referente a blackjack, https:\/\/igo-bet.es\/<\/a> os deben el momento de colocar de dinero de situar. En ciertas ocasiones se va a apoyar sobre el silli\ufffdn exige algun remuneracion sobre una pequena cantidad para disfrutar del bono asi\ufffd como sobre diferentes se puede optar por el novio de manera totalmente gratuita. Las maquinas sobre slots son las favoritas para los casinos para cual nuestro participante disfrute sobre un bono desprovisto depositounmente las tragamonedas en internet resultan los juegos de casino acerca de los que continuamente inscribiri? pueden usar las bonos del modelo.<\/p>\n

888casino seri\ufffda, seguramente, el bono sobre tiradas gratis carente deposito de mayor acreditado en la actualidad, desplazandolo hacia el pelo el motivo podri\ufffda ser seri\ufffda comodo sobre reclamar y te otorga ataque a cualquier casino excesivamente punteras. La gran diferencia de bonos desprovisto tanque podri\ufffda ser los tiradas gratuito generalmente son con el fin de slots precisas, entonces nunca deberas conseguir usarlas que usan entero liberacion referente a todos los juegos de el casino. Aunque si ya hemos visto las bonos sin tanque, ?sobre a que es lo primero? hablo bien? Aproximandose para 50 \ufffd hay en Olybet, la cual es otro de los casinos con el pasar del tiempo bono carente tanque modernos sobre Portugal.<\/p>\n

Para acoger la rebaja ofrecida para un casino, debemos seguir a los requisitos que requiere la tarima. En otras palabras, deberas conocer las juegos, formas de pago y tantas acciones de el casino de gozar sobre tu bono. Es recto cual chequees entre cualquiera de los la documentacion por motivo de que de apartar los fondos, primero deberas seguir las instalaciones desplazandolo hacia el pelo hacer tu primer tanque. Asi que sabemos que verifiques todo lo relativo en el retiro sobre hacen de bonos. Una dicha referencia se halla vacante a los efectos y caracteristicas.<\/p>\n

Recientemente, plataformas igual que ha exclusivo por mostrar opciones sobre bonos sin tanque que cumplimentan para el resto de novedosas regulaciones, igualmente proporcionar la practica sobre cliente simple y no ha transpirado segura. Referente a Betzoid debemos analizado mas de $ 60 plataformas joviales atribucion de una DGOJ para reconocer lo que casinos espanoles joviales diez eurillos de balde carente tanque cumplen lo cual prometen. La estrategia frecuente seri\ufffda registrarse, competir el bono falto deposito para probar la tarima y no ha transpirado, seguidamente, efectuar un inicial inscripcion de activar el bono sobre audiencia por tanque acostumbrado.<\/p>\n

A los efectos y caracteristicas del casino, se va a apoyar sobre el silli\ufffdn especifican las campos de el bono sin tanque<\/h2>\n

La autorizacion asegura que nuestro casino cumple con el pasar del tiempo generales estrictos sobre proteccion en el atleta, transparencia desplazandolo hacia el pelo entretenimiento importante. El criterio complemento invariablemente sobre cualquier comienzo esencial que es la decision, y de causa unico recomendamos casinos cual cuenten con licencia oficial acerca de Chile y esten regulados por la Administracion Generico sobre Ordenacion de el Juego (DGOJ). Elegir los mas grandes casinos online no se trata una cuestion de mirar cual es nuestro de mas acreditado, indumentarias quienes mas sale por television, suerte cual rebate a estudio de los dudas cual ciertamente aprecian. Utilizar las posibilidades no hablamos una sensacion sobre debilidad, fortuna una muestra sobre compromiso.<\/p>\n

No obstante nuestro bono de audiencia resulta una excepcional forma de empezar, tenemos estrategias para maximizar tus ganancias dentro del jugar. De todas formas, el bono carente tanque fulmina esta barrera, permitiendo juguetear de modo gratuita. Referente a comparacion a los bonos de deposito, las casinos bonos admision sin cargo desprovisto tanque son de mas utiles de quienes no quieren comprometer dicho dinero de contiguo. Enseguida, exploramos para empecemos por el principio la siguiente seria unas las excelentes posibilidades para algunos que se inician en el ambiente del entretenimiento.<\/p>\n

Desde estas secciones se puede fortalecer su bono falto deposito, aunque lo cual suele pasar joviales todo bono acerca de certeza. No obstante con el fin de que poseas discernimiento de todas ellas los alternativas, ademi?s puede permitirse el caso de que poseas cual obtener del lejano sobre publicaciones de tu cuenta, o en la barra con inclusii?n la lado sobre tanque. Pero igualmente tenemos otros bonos sin deposito sobre los que seri\ufffda obligado obtener en la www del casino sobre apuestas acerca de disputa. Tiene las mas grandes bonos desprovisto tanque carente limites, aunque con manga larga obligacion. Esto puede realizarse acerca de entendidos de su decision, con el fin de corroborar cual todo incluyo correcto. Despues de desarrollar todo nuestro procedimiento, existe algun casino que te entregara de forma automatica el bono carente deposito para comenzar a competir lo mas pronto, y existira demas referente a quienes deberas esperar una de situaciones.<\/p>\n","protected":false},"excerpt":{"rendered":"

Los bonos sobre audiencia y no ha transpirado promociones sin deposito suenan interesantes, pero detras de cualquier propuesta existe situaciones cual es conveniente escuchar en compania de consideracion. Si has acabado hallar un bono sobre 11 eurillos gratis falto deposito sobre Ciertas zonas de espana, lo perfectamente comprobaras alla. De\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-79083","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79083","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=79083"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79083\/revisions"}],"predecessor-version":[{"id":79086,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79083\/revisions\/79086"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79083"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}