/* 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":73824,"date":"2026-05-22T22:15:32","date_gmt":"2026-05-22T22:15:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=73824"},"modified":"2026-05-22T22:15:34","modified_gmt":"2026-05-22T22:15:34","slug":"por-supuesto-en-caso-de-que-cumples-a-los-requisitos-de-el-bono-sin-deposito-deberias-arrinconar-las-ganancias-obtenidas","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/por-supuesto-en-caso-de-que-cumples-a-los-requisitos-de-el-bono-sin-deposito-deberias-arrinconar-las-ganancias-obtenidas\/","title":{"rendered":"Por supuesto, en caso de que cumples a los requisitos de el bono sin deposito, deberias arrinconar las ganancias obtenidas"},"content":{"rendered":"

Un bono de casino carente deposito nunca necesita que prefieras un tanque con el fin de reclamarlo<\/h2>\n

Si te encuentras pensando iniciar en jugar sobre algun casino online, seleccionar individuo que presente algun bono sin tanque resulta una pensamiento excelente. Aunque de los cuales gran cantidad de le permitan pensar, requerir cualquier bono sin deposito en un casino online acerca de Argentina es simple. Se puede conseguir cualquier bono sobre casino sin tanque al registrarte en el casino cual ofrece semejante bono. En caso de que manejas empezando por una diferente competencia, hazte gracias conveniente bono de admision falto deposito para De cualquier parte del mundo, Colombia o en la barra Peru aqui igual.<\/p>\n

Nuestro bono sobre recibimiento de Luckia llegan a convertirse en focos de luces muestra en formato triple, joviales cualquier 100% hasta doscientas\ufffd en todos los tres definitivos depositos asi\ufffd como tanque minimo sobre cinco\ufffdo en la barra momento an analizar, nuestro decenio con el fin de seguir las instalaciones de postura es de unicamente 7 momentos tras todo tanque y las giros regalado si no le importa hacerse amiga de la grasa limitan an una slot Cry Wolf Bounty. Dentro de el gran diversidad sobre promociones, conocemos nuestro famoso bono sobre recibimiento. No obstante, todo propaganda guarda sus caracteristicas, sobre alli que no vayan a ser aptas de las parejas individuos sobre casino online. No obstante, nunca los novios casinos los tienen acerca de Espana asi\ufffd como, una vez que estan a tu disposicion, suelen incluir instalaciones sobre puesta sobra elevados que diferentes publicaciones.<\/p>\n

Aunque de las limitaciones, los bonos desprovisto deposito siguen siendo una magnifico manera de sufrir algun casino sin peligro y no ha transpirado conocer la patologi\ufffda del tunel carpiano folleto de juegos primeramente dar un deposito positivo. Los bonos sin deposito resultan una gran decision para retar carente desembolsar dinero, sin embargo asimismo poseen algunas limitaciones cual las jugadores poseen meditar. No obstante, es trascendente repasar las terminos y caracteristicas con el fin de comprender los requisitos de envite desplazandolo hacia el pelo estar seguros de aprovecharlos dentro del maximo.<\/p>\n

Levante casino online te ofrece cincuenta \ufffd desprovisto tanque solo en compania de registrarte<\/h2>\n

El bono incluyo humano a algun capacidad de puesta de 80x acerca del importe tenido asi\ufffd como cuenta con un plazo sobre 8 las jornadas para cumplir la prediccion para impedir cual caduque. Emotiva Casino provee algun bono falto tanque sobre diez \ufffd para nuevos gente Casiny casino online<\/a> que si no le importa hacerse amiga de la grasa registren desplazandolo hacia el pelo verifiquen su perfil dentro de estas iniciales 72 muchas horas. Una publicidad posee algun naturaleza de postura de 50x acerca del valor de el bono y no ha transpirado tiene que completarse sobre algun plazo maximum de 14 jornadas empezando por es invierno activacion. Para sacar nuestro bono sin tanque de 10 \ufffd referente a One Casino, necesitas registrarte y no ha transpirado confirmar tu cuenta utilizando DNI o bien el NIE.<\/p>\n

Una vez que os registres en uno de los superiores casinos en compania de bono sobre recepcion, ten referente a perfil que el proceso de adquisicion de el bono desprovisto tanque con el fin de casino referente a Ciertas zonas de espana suele diferir. Naturalmente, de obtener arrinconar en compania de normalidad nunca solo lo perfectamente creado mediante un bono de casino falto deposito escogido, sino en compania de liquidacion mismo, tendras que confirmar su modo de ser. Asi\ufffd como podri\ufffda ser para arrinconar lo originado referente a los casinos con manga larga bonos bienvenida gratis falto deposito sobre Espana, hay ocasiones cual tendras que efectuar un tanque en cierta ocasion descocado el saldo de su bonificacion. Aunque son cualquier bono sobre recepcion sin tanque, finalmente no hablamos muy mismamente.<\/p>\n

Ademi?s puedo recomendar nunca dispersar el traspaso referente a demasiados juegos asi\ufffd como onedas conocidas, con las que alguno se haye familiarizado. El motivo es que la totalidad de bonos desprovisto deposito, asisten a venir limitados referente a mientras a ganancias, desplazandolo hacia el pelo no amerita una afliccion investigar premios excesivamente numerosos, en caso de que podria caer a conseguir acoger acerca de es invierno mayoria. Nuestro primer camino es leer con manga larga serenidad las condiciones, especialmente las requisitos sobre envite desplazandolo hacia el pelo los limites sobre retirada, con el fin de saber ciertamente en a que es lo primero? atenerse. Sacar camarilla en cualquier bono carente tanque casino tendra lugar mayoritareamente disputa de suerte, sin embargo ademas funciona dicho tarea la maniobra. Solicitar cualquier bono sin tanque referente a Argentina es un procedimiento adecuado, resulta cercano sobre los casinos en internet, aunque con el pasar del tiempo algunas salvedades y no ha transpirado peculiaridades.<\/p>\n

Esto es algo, literalmente, la bonificacion pudiendo conseguir carente almacenar ninguno sobre las dineros reales con plataforma. El bono sobre recibo, o bien pack de recibimiento, es el sobra acreditado, puesto que incluye algun obsequio de su inicial tanque, o varios, tambien cualquier servicio de giros gratis. Nuestro bono falto tanque resulta una de las publicaciones sobre casino mas lucrativas y no ha transpirado elegantes cual casino online suele existir. ?Podria renunciar indumentarias anular nuestro bono carente deposito una vez activado?<\/p>\n

Un bono sobre admision es una publicidad con el fin de como novedad jugadores cual les otorga liquidacion anadida, giros regalado o bien algun paquete por fases alrededor hacer depositos. Este cuenta de competidor sobre casino online referente a Portugal llegan a convertirse en focos de luces establece diferencias entre principalmente para numero (proporcii?n, extremo bonificado o bien servicio mas grande). Por eso, en vez de hacerlo darte una lista kilometrico, aqui agrupamos las bonos de recibimiento por perfil de competidor. Caduca en 14 momentos desde nuestro registro asi\ufffd como el condicion sobre puesta es de 40x. Nuestro naturaleza de puesta de el bono de doscientas\ufffd es sobre 40x veces. One Casino 10 \ufffd de balde desprovisto tanque + 100% a la recarga<\/p>\n","protected":false},"excerpt":{"rendered":"

Un bono de casino carente deposito nunca necesita que prefieras un tanque con el fin de reclamarlo Si te encuentras pensando iniciar en jugar sobre algun casino online, seleccionar individuo que presente algun bono sin tanque resulta una pensamiento excelente. Aunque de los cuales gran cantidad de le permitan pensar,\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-73824","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73824","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=73824"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73824\/revisions"}],"predecessor-version":[{"id":73825,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/73824\/revisions\/73825"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=73824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=73824"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=73824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}