/* 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":71698,"date":"2026-05-22T21:55:44","date_gmt":"2026-05-22T21:55:44","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71698"},"modified":"2026-05-22T21:55:45","modified_gmt":"2026-05-22T21:55:45","slug":"por-supuesto-en-caso-de-que-cumples-con-los-requisitos-de-el-bono-sin-tanque-podras-eximir-los-ganancias-obtenidas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/por-supuesto-en-caso-de-que-cumples-con-los-requisitos-de-el-bono-sin-tanque-podras-eximir-los-ganancias-obtenidas\/","title":{"rendered":"Por supuesto, en caso de que cumples con los requisitos de el bono sin tanque, podras eximir los ganancias obtenidas"},"content":{"rendered":"

Un bono de casino carente deposito nunca requiere que realizes algun deposito de reclamarlo<\/h2>\n

Si estas teniendo en mente empezar en participar referente a algun casino en internet, designar uno cual presente cualquier bono falto tanque es una https:\/\/bwin-casino.es\/<\/a> valoracion excepcional. Aunque de los que bastantes puedan meditar, requerir algun bono carente deposito en cualquier casino online acerca de Ciertas zonas de espana suena simple. Se puede conseguir un bono sobre casino falto deposito en el registrarte en nuestro casino cual provee semejante bono. En caso de que juegas desde una diferente atribucion, hazte mediante un preferible bono de recibo sin deposito con el fin de Portugal, Colombia o Peru aca exacto.<\/p>\n

Nuestro bono de admision sobre Luckia se presenta en formato triple, con manga larga un 100% incluso doscientos\ufffd en cada uno las tres iniciales depositos asi\ufffd como deposito diminuto sobre 5\ufffdo en la barra aspecto a tener en cuenta, el decada con el fin de seguir las requisitos de apuesta seri\ufffda de separado 6 las jornadas tras completo deposito y no ha transpirado los giros gratis inscribiri? limitan an una slot Cry Wolf Bounty. Dentro de dicho amplia diversidad sobre promociones, nos topamos nuestro famoso bono sobre recepcion. Sin embargo, completo promocion guarda sus caracteristicas, sobre alla que no fuesen aptas para todos los usuarios sobre casino en internet. Pero, no todos los casinos los siguen sobre Ciertas zonas de espana y, una vez que estan que existen, acostumbran a incluir instalaciones de puesta de mas elevados que otras publicaciones.<\/p>\n

A pesar de estas limitaciones, las bonos carente tanque deben ser una excelente manera de percibir cualquier casino desprovisto riesgo asi\ufffd como saber dicho folleto de juegos primeramente de hacer algun deposito conveniente. Las bonos falto deposito resultan una enorme opcion para jugar carente gastar dinero, aunque asimismo poseen algunas limitaciones cual las jugadores poseen profundizar. Aunque, seri\ufffda significativo repasar las palabras y no ha transpirado condiciones de entender los campos de apuesta desplazandolo hacia el pelo estar seguros de aprovecharlos alrededor del maximum.<\/p>\n

Este casino online os brinda 50 \ufffd desprovisto deposito unico con manga larga registrarte<\/h2>\n

Nuestro bono estaria cristiano en un naturaleza sobre postura de 80x sobre el costo sido dados desplazandolo hacia el pelo cuenta con un termino sobre 6 jornadas con el fin de respetar la prediccion suin que caduque. Emotiva Casino provee algun bono sin deposito sobre 10 \ufffd para recientes seres que si no le importa hacerse amiga de la grasa registren desplazandolo hacia el pelo verifiquen su perfil adentro de estas mas recientes 72 muchisimo tiempo. Una publicidad tiene un naturaleza de puesta sobre 50x sobre el importe del bono desplazandolo hacia el pelo debe completarse sobre un termino maximum de 14 momentos en el momento en que dicho activacion. Para obtener el bono desprovisto tanque de 11 \ufffd sobre One Casino, necesitas registrarte desplazandolo hacia el pelo comprobar tu perfil con el DNI en el caso de que nos lo olvidemos el NIE.<\/p>\n

Cuando os registres en algunos de los mas grandes casinos con bono sobre admision, ten sobre cuenta que nuestro transcurso de obtencion de el bono sin tanque para casino acerca de De cualquier parte del mundo puede cambiar. Obviamente, de permitirse apartar con manga larga normalidad nunca unico lo perfectamente creado usando bono de casino desprovisto tanque elegido, fortuna con cesion mismo, vas a confirmar su idiosincrasia. Desplazandolo hacia el pelo podri\ufffda ser de eximir lo creado sobre las casinos que usan bonos recibimiento gratis desprovisto deposito acerca de Chile, existe ocasiones cual vas a realizar cualquier deposito una vez libertino nuestro venta de su bonificacion. No obstante resultan cualquier bono de audiencia carente tanque, al final no se trata muy de este modo.<\/p>\n

Igualmente prefiero no dispersar el liquidacion acerca de muchos juegos desplazandolo hacia el pelo onedas conocidas, con las que uno se encuentre familiarizado. Nuestro tema es que la mayoria de bonos sin tanque, van a venir limitados referente a mientras en ganancias, desplazandolo hacia el pelo no amerita la pena buscar premios bastante numerosos, si no podria caerse an obtener acoger acerca de dicho totalidad. El inicial camino es escuchar joviales calma la prediccion, especialmente las instalaciones sobre apuesta desplazandolo hacia el pelo las limites sobre retirada, para conocer ciertamente a vayamos por partes amoldarse. Sacar grupo en algun bono falto deposito casino sera principalmente cuestion de suerte, pero ademas soluciona la patologi\ufffda del tunel carpiano rol la estrategia. Solicitar un bono sin deposito referente a De cualquier parte del mundo seri\ufffda un procedimiento adecuado, mismamente cercano sobre aquellos casinos online, aunque que usan ciertas salvedades y caracteristicas.<\/p>\n

Esto es, textualmente, la bonificacion que puede sacar falto depositar ninguno sobre las recursos reales en la tarima. Nuestro bono de audiencia, o paquete sobre recibimiento, seri\ufffda nuestro mayormente conocido, por consiguiente abarca un regalo para su inicial deposito, indumentarias varios, ademas de cualquier servicio de giros de balde. Nuestro bono carente tanque resulta una de las publicaciones de casino mas profusamente lucrativas desplazandolo hacia el pelo atractivo que casino online suele encontrarse. ?Podria renunciar en el caso de que nos lo olvidemos anular nuestro bono sin deposito en cierta ocasion activado?<\/p>\n

Cualquier bono sobre recepcion resulta una promocion para como novedad jugadores que les proporciona cesion extra, giros gratuito o bien un servicio para etapas en el efectuar depositos. Este perfil de participante de casino en internet en Chile se va a apoyar sobre el silli\ufffdn compara mayoritareamente para cantidad (porcentaje, maximum bonificado o paquete mas enorme). Asi que, por darte un planning kilometrico, aqui agrupamos las bonos sobre bienvenida para perfil sobre jugador. Caduca referente a 14 las jornadas nadie pondri\ufffda en duda desde nuestro sometimiento y el condicion de postura seri\ufffda de 40x. Nuestro exigencia de postura de el bono de doscientos\ufffd seri\ufffda sobre 40x veces. One Casino diez \ufffd gratuito carente tanque + 100% a nuestra amiga la reciente recarga<\/p>\n","protected":false},"excerpt":{"rendered":"

Un bono de casino carente deposito nunca requiere que realizes algun deposito de reclamarlo Si estas teniendo en mente empezar en participar referente a algun casino en internet, designar uno cual presente cualquier bono falto tanque es una https:\/\/bwin-casino.es\/ valoracion excepcional. Aunque de los que bastantes puedan meditar, requerir algun\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-71698","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71698","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=71698"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71698\/revisions"}],"predecessor-version":[{"id":71699,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71698\/revisions\/71699"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71698"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}