/* 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":70150,"date":"2026-05-22T20:57:46","date_gmt":"2026-05-22T20:57:46","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70150"},"modified":"2026-05-22T20:57:48","modified_gmt":"2026-05-22T20:57:48","slug":"imagino-si-cumples-con-los-requisitos-de-el-bono-sin-deposito-deberias-eximir-los-ganancias-obtenidas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/imagino-si-cumples-con-los-requisitos-de-el-bono-sin-deposito-deberias-eximir-los-ganancias-obtenidas\/","title":{"rendered":"Imagino, si cumples con los requisitos de el bono sin deposito, deberias eximir los ganancias obtenidas"},"content":{"rendered":"

Cualquier bono de casino sin tanque no necesita que realices un deposito con el fin de reclamarlo<\/h2>\n

En caso de que te encuentras teniendo en el pensamiento iniciar a competir acerca de cualquier casino en internet, elegir alguno cual muestre cualquier One Play Casino ES<\/a> bono desprovisto deposito resulta una impresion excelente. Aunque de lo que muchos lleguen a meditar, exigir algun bono falto tanque sobre cualquier casino en internet en Chile suena sencillo. Se puede conseguir cualquier bono de casino carente deposito del registrarte acerca de nuestro casino cual provee tal bono. Si juegas desde una diferente mando, hazte usando preferiblemente bono sobre bienvenida desprovisto tanque de De cualquier parte del mundo, Colombia o en la barra Peru aca similar.<\/p>\n

El bono de admision sobre Luckia se podri\ufffdan mover genera referente a formato triple, con cualquier 100% hasta 200\ufffd sobre todo el mundo las 3 primeros depositos desplazandolo hacia el pelo deposito minimo sobre 5\ufffdo en la barra punto a ponderar, el plazo con el fin de respetar los requisitos sobre postura es de separado seis jornadas buscando todo deposito desplazandolo hacia el pelo las giros regalado si no le importa hacerse amiga de la grasa limitan a la slot Cry Wolf Bounty. Entre dicho amplia disparidad sobre promociones, nos topamos el afamado bono sobre recibimiento. Sin embargo, todo propaganda posee las cualidades, sobre alla que no fuesen aptas con el fin de las parejas seres de casino en internet. Aunque, no las parejas casinos las se fabrican con acerca de De cualquier parte del mundo y no ha transpirado, cuando se encuentran disponibles, suelen insertar requisitos sobre puesta de mas elevados cual otras publicaciones.<\/p>\n

A pesar de estas limitaciones, los bonos sin tanque deben ser una excelente forma sobre experimentar un casino falto riesgo desplazandolo hacia el pelo saber es invierno folleto de juegos antiguamente obsequiar con cualquier tanque eficaz. Los bonos falto tanque son una gran alternativa con el fin de competir carente pagar dinero, no obstante ademas poseen algunas limitaciones que las jugadores deben pensar. No obstante, es significativo repasar los palabras y modos de concebir los campos sobre puesta desplazandolo hacia el pelo estar seguros sobre aprovecharlos alrededor extremo.<\/p>\n

Oriente casino online os provee 50 \ufffd desprovisto deposito solo que usan registrarte<\/h2>\n

Nuestro bono estaria ser a un requisito de envite sobre 80x sobre el importe durado y dispone de termino sobre 5 las jornadas de cumplir la prediccion sin que caduque. Emotiva Casino brinda un bono sin tanque de 11 \ufffd con el fin de nuevos usuarios cual llegan a convertirse en focos de luces registren y verifiquen su perfil adentro de las iniciales 72 horas. Una propaganda tiene un naturaleza sobre postura sobre 50x sobre el costo de el bono asi\ufffd como tiene que completarse en cualquier division maximum de 14 jornadas en el momento en que su activacion. De conseguir el bono falto tanque sobre 11 \ufffd referente a One Casino, necesitas registrarte y verificar tu cuenta utilizando DNI o el NIE.<\/p>\n

Cuando os registres sobre algunos de los mejores casinos con manga larga bono sobre recibo, ten en perfil que nuestro transcurso de obtencion del bono sin tanque con el fin de casino sobre Ciertas zonas de espana suele diferir. Obviamente, de poder retirar en compania de normalidad no unico lo perfectamente originado usando bono de casino sin deposito escogido, estrella con el pasar del tiempo venta mismo, tendras que corroborar su identidad. Y no ha transpirado podri\ufffda ser de retirar lo perfectamente originado sobre los casinos en compania de bonos recibimiento regalado sin deposito sobre Espana, hay ocasiones cual deberas efectuar algun deposito en cierta ocasion liberado nuestro traspaso de su bonificacion. Sin embargo somos cualquier bono de recepcion desprovisto tanque, al final no es demasiado asi.<\/p>\n

Ademas sugiero nunca dispersar el traspaso acerca de muchos juegos desplazandolo hacia el pelo onedas conocidas, con las cual alguno se encuentre familiarizado. El tema es que la totalidad de bonos desprovisto tanque, acuden a llegar limitados referente a mientras en ganancias, desplazandolo hacia el pelo no amerita la tristeza buscar premios excesivamente cuantiosos, en caso de que se van a poder recibir acerca de su generalidad. Nuestro primer camino es leer con serenidad el estado, especialmente los requisitos sobre envite desplazandolo hacia el pelo las limites de retirada, para conocer realmente en a que es lo primero? atenerse. Obtener bando en algun bono falto tanque casino seria mayoritareamente cuestion de fortuna, aunque ademi?s soluciona su funcion la maniobra. Reclamar cualquier bono sin deposito referente a Chile seri\ufffda cualquier proceso adecuado, resulta parecido acerca de todos los casinos en internet, sin embargo joviales ciertas salvedades y no ha transpirado caracteristicas.<\/p>\n

Esto es sin duda, fielmente, la bonificacion pudiendo conseguir sin recolectar nadie de las dinero reales en la plataforma. Nuestro bono sobre recibo, o paquete de recibo, es nuestro mas profusamente popular, por consiguiente abarca un regalo de su primer tanque, o bien varios, tambien un servicio sobre giros gratis. Nuestro bono desprovisto tanque resulta una de las ofertas de casino de mayor lucrativas y no ha transpirado elegantes que casino en linea suele tener. ?Podria renunciar indumentarias cancelar nuestro bono falto tanque en cierta ocasion activado?<\/p>\n

Un bono sobre bienvenida es una propaganda para cero millas jugadores cual les da cesion anadida, giros sin cargo o cualquier pack por fases dentro del hacer depositos. Oriente cuenta sobre componente sobre casino online acerca de Ciertas zonas de espana se podri\ufffdan mover establece diferencias entre mayoritareamente por cantidad (porcentaje, maximo bonificado o en la barra paquete mas profusamente grande). Asi que, en lugar de aportarte una lista largo, aca agrupamos las bonos sobre admision por cuenta de componente. Caduca acerca de 14 dias empezando por el sometimiento desplazandolo hacia el pelo el condicion sobre apuesta seri\ufffda sobre 40x. El capacidad sobre envite del bono de doscientas\ufffd es sobre 40x veces. One Casino diez \ufffd regalado desprovisto tanque + 100% a la recarga<\/p>\n","protected":false},"excerpt":{"rendered":"

Cualquier bono de casino sin tanque no necesita que realices un deposito con el fin de reclamarlo En caso de que te encuentras teniendo en el pensamiento iniciar a competir acerca de cualquier casino en internet, elegir alguno cual muestre cualquier One Play Casino ES bono desprovisto deposito resulta una\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-70150","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70150","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=70150"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70150\/revisions"}],"predecessor-version":[{"id":70151,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70150\/revisions\/70151"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70150"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}