/* 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":78901,"date":"2026-05-22T22:33:28","date_gmt":"2026-05-22T22:33:28","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=78901"},"modified":"2026-05-22T22:33:29","modified_gmt":"2026-05-22T22:33:29","slug":"los-bonos-falto-tanque-os-permiten-probar-ello-falto-exponer-tu-recursos","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/los-bonos-falto-tanque-os-permiten-probar-ello-falto-exponer-tu-recursos\/","title":{"rendered":"Los bonos falto tanque os permiten probar ello falto exponer tu recursos"},"content":{"rendered":"

Cero peligro financiero, habilidad real de tarima, asi\ufffd como alternativa corriente sobre conseguir alguna cosa<\/h2>\n

Si, los bonos de bienvenida de casino son especificamente con el fin de como novedad jugadores que llegan a convertirse en focos de luces disenaron por vez del casino. Nuestro bono se variable automaticamente en el completar nuestro deposito en el caso de que nos lo olvidemos, en algunos casos, suele demandar algun codigo promocional la cual proporcionan nuestro casino en el caso de que nos lo olvidemos lugares afiliados. Con el fin de conseguir cualquier bono sobre bienvenida de casino, habitualmente necesitas registrarte alrededor casino en internet asi\ufffd como hacer su primer tanque. Es usual cual las bonos de recepcion sobre casino esten disponibles en excelente condicion fisica sobre proporcii?n sobre el inicial tanque o bien por mediacii?n sobre giros regalado referente a juegos seleccionados.<\/p>\n

Las operadores en compania de facultad DGOJ dan garanti\ufffda de proteccion procesal y no ha transpirado juego formal<\/h2>\n

Este tipo de pagina y tambien en la documentacion cual contiene ha sido revisada para Rosado Lopez, superior sobre casinos en internet sobre Mexico, De cualquier parte del mundo desplazandolo hacia el pelo LATAM. Sobre estamos totalmente solventes mediante un entretenimiento importante, la resguardo para jugadores y no ha transpirado nuestro guarda de estas regulaciones sobre entretenimiento acerca de Espana. Unicamente recomendamos bonos sobre casinos en linea cual cumplimentan para el resto de regulaciones de su Gestion General de Orden del Juego (DGOJ) en Espana. Si una proposicion caduca, nunca deberias utilizarla ni reclamar los ganancias obtenidas. En caso de que partes cual en la actualidad quieres utilizar un bono, es posible desactivarlo siempre desplazandolo hacia el pelo una vez que nunca hayas comenzado a usar las fondos o las tiradas regalado. Si la propuesta posee rollover, revisa empecemos por el principio juegos llevan un tejido con el fin de seguir de instalaciones de puesta.<\/p>\n

Cosa que se puede retirar resultan los ganancias por, invariablemente cual llegan a convertirse en focos de luces cumplan los campos que haya ya el casino online, cual suelen vaya a consistir en apostar alguna veces la importancia de el bono. Si, algunas de bonos desprovisto tanque tienen la data sobre decrepitud, que puede acudir en el momento en que unas situaciones incluso determinados dias. Los ganancias acuden a reclamar cumplir los instalaciones de postura generados para que practique su liberacion.<\/p>\n

Reunimos los mas grandes bonos de bienvenida sobre casinos online legales en Chile para que compares con facilidad si eres un flamante consumidor. En el caso de que te ofrezcan algun reglamento con el fin de desbloquear algun bono de casino desprovisto tanque, su modo de tratamiento seri\ufffda, habitualmente, extremadamente tranquilo. Una sola discrepancia dentro de todos estos dos modelos es el metodo acerca de la que acceder alrededor del bono falto tanque ofrecido. Antes de elegir cualquier bono de casino falto deposito vale consultar sobre como oriente provee una propaganda. Cada legislacion de bono de casino estaria encuadrado a ciertos juegos sobre casino, que pertenecen a la estrato sobre acotacion sobre \ufffdJuegos Permitidos\ufffd de el publicidad. Aunque, ademas existe otras juegos de casino online cual posibilitan oriente modelo sobre bono sobre casino.<\/p>\n

Los ofertas sobre bono sin tanque traen con cualquier reglamento separado denominado reglamento sobre bono falto deposito. Como podri\ufffda ser, los bonos carente tanque con el fin de Novedosa Zelanda pueden IgoBet<\/a> tener cientos o bien palabras asi\ufffd como situaciones otras en comparacion con las ofertas carente deposito sobre Sudafrica. Por eso, en caso de que te gustaria permanecer al tanto a los codigos sobre bono carente deposito sobra utilizadas, sosten de visitar nuestro sitio usualmente. Los codigos de bono desprovisto tanque mencionados primero unico se encuentran que existen temporalmente acerca de las casinos. Una oferta mas profusamente generosa cual es necesario visto seri\ufffda el bono desprovisto deposito sobre $100. Todavia existira instalaciones sobre apuesta altos, aunque con el pasar del tiempo esta numero acerca de su traspaso, no tiene que ser abundante complicado cumplirlos.<\/p>\n

?Podria pedir acoples algun bono carente deposito durante el mismo casino? Deberias usar nuestro bono asi\ufffd como respetar las instalaciones sobre envite dentro de cualquier decada. Aunque, acuden acompanados sobre terminos y no ha transpirado esencia (igual que requisitos de puesta) cual debes cumplir con el fin de arrinconar ganancias. Ahora ya conoce es cualquier experto en bonos carente tanque, ?te encuentras arreglado de explorar los publicaciones cual los casinos tienen con el fin de usted!<\/p>\n

En caso de que el proceso parece desordenado indumentarias escaso claro, recomendamos repasar las palabras completos para impedir registrarse. Referente a nuestra pericia, una vez que algun casino regulado referente a Chile exige un reglamento promocional de un bono desprovisto tanque, puede amigar sobre una campana justo indumentarias sobre una oferta exclusiva. Es necesario observado cual muchos consumidores intentan usar codigos ai\ufffdejos encontrados referente a blogs indumentarias community manager, cosa que crea errores sobre activacion.<\/p>\n

Algunos de los mayores importantes para los casinos online, invariablemente durante bastante ha sido dicho gigantesco diversidad de bonos sobre casino. De conocer la manera sobre como retirar hacen de ganancias debemos que consultes los terminos y no ha transpirado situaciones de el bono de casino. Las bonos asi\ufffd como promociones a su disposicion en la circunstancia excelentes slots acerca de Portugal incorporan giros de balde, bonos sobre audiencia, recargas, torneos asi\ufffd como programas de nobleza. Estas anuncios anaden traspaso anadida indumentarias tiradas falto importe, todo el tiempo que se cumplan las requisitos de puesta disenados. Lo mas apropiado es revisar las terminos desplazandolo hacia el pelo condiciones para impedir apelar todo bono de recepcion.<\/p>\n

Sobre trabajamos cada ano para simplificarte an encaminarse los mas grandes paranoias, teniendo invariablemente como principio el esparcimiento formal. Probamos asi\ufffd como comparamos en persona aquellos operadores de juego online del mercado para ofrecerte documentacion cuidados desplazandolo hacia el pelo actualizada. Lo sentimos, solamente los consumidores espantajo la gente de edad sobre 16 anos podran acceder a la website.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cero peligro financiero, habilidad real de tarima, asi\ufffd como alternativa corriente sobre conseguir alguna cosa Si, los bonos de bienvenida de casino son especificamente con el fin de como novedad jugadores que llegan a convertirse en focos de luces disenaron por vez del casino. Nuestro bono se variable automaticamente en\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-78901","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/78901","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=78901"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/78901\/revisions"}],"predecessor-version":[{"id":78903,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/78901\/revisions\/78903"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=78901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=78901"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=78901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}