/* 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":71600,"date":"2026-05-22T21:53:54","date_gmt":"2026-05-22T21:53:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71600"},"modified":"2026-05-22T21:53:55","modified_gmt":"2026-05-22T21:53:55","slug":"analiza-la-transparencia-asi%ef%bf%bd-como-el-estado-de-las-plataformas-con-el-fin-de-mostrar-informacion-obvia-y-fiable","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/analiza-la-transparencia-asi%ef%bf%bd-como-el-estado-de-las-plataformas-con-el-fin-de-mostrar-informacion-obvia-y-fiable\/","title":{"rendered":"Analiza la transparencia asi\ufffd como el estado de las plataformas con el fin de mostrar informacion obvia y fiable"},"content":{"rendered":"

Luego, encontraras la escala comparativa para el resto de mejores posibilidades ordenadas por pensamiento eficaz de el bono<\/h2>\n

En caso de que te gustaria acudir algun bono falto tanque acerca de De cualquier parte del mundo, os alegrara saber cual nuestro desarrollo pude ser tranquilo. Por eso, las expertos de Casino Guru hallan realizado el trabajo mas profusamente dificil asi\ufffd como hallan visto las mejores bonos desprovisto tanque que inscribiri? ofrecen sobre Portugal. Las bonos sin tanque resultan una buena forma para que los jugadores sobre casino espanoles disfruten sobre juegos de remuneracion desprovisto comprometer dicho dineropara los anuncios y localiza el preferible bono carente deposito anonima referente a Casino Guru. Es una circunstancia para los bonos sobre casino, que nos demanda la cuantia baratos que es necesario colocar antes de lograr arrinconar las ganancias obtenidas con manga larga aquel bono.<\/p>\n

Reclama nuestro bono sin deposito acerca de los dos y BetWin360<\/a> no ha transpirado comprueba en que consiste os convence de mayor. Si posees suerte asi\ufffd como cumples los requisitos de apuesta, es posible convertir estos 20\ufffd en euros retirables a tu perfil del banco. Obten algun bono del 100% incluso 500EUR y doscientos tiradas sin cargo buscando su primer tanque. Con el fin de asegurarnos de que el contenido solo es simule con el fin de dichos personas es necesario incorporado nuestro filtro mayores, que tu deberia reponer verazmente. Los viviendas de apuestas estan obligadas por jurisprudencia a verificar la identidad de los jugadores para impedir proveer todo bono.<\/p>\n

Disfruta de los superiores bonos desprovisto deposito carente limites, sin embargo con obligacion. Esto suele hacerse sobre entendidos de su empuje, de corroborar que cualquier esta considerado. Detras de llevar a cabo cualquier nuestro transcurso, tenemos un casino que te entregara sobre manera automatizada el bono sin deposito con el fin de comenzar a retar cuanto antes, y no ha transpirado habra demas referente a aquellos que deberas aguardar unas situaciones. Igualmente, mismamente os aseguras nuestro existir ya seleccionado su aparato sobre pago para cuando intentar efectuar algun deposito del manana. Existe salas de casino referente a quienes nunca seria obligado conducir en cabo este menor transito, no obstante que seguidamente lo perfectamente exigiran de permitirse entregarte los ganancias de tu bono sin tanque. Tu separado busqueda nuestro bono desprovisto deposito que superior encaje joviales hacen de exigencias asi\ufffd como aprovechalo acerca de tus apuestas desplazandolo hacia el pelo juegos.<\/p>\n

Muchas veces nuestro bono de recibo tiene algun periodo sobre vigencia conveniente en 7 jornadas despues de obtenido. Asegurate ademi?s de repasar una legalidad del casino sobre tu seleccion en comenzar en retar. Los primeros naciones cual tienen dicha modelo de premios resultan Malta, Curacao y Gibraltar. Invariablemente cual quieras jugar asi\ufffd como escoger uno de dichos premios, deberias realizarlo sobre casas de puesta extranjeras.<\/p>\n

Esta referencia a menudo esta dentro del alejado de palabras y no ha transpirado caracteristicas de el casino cual emplees<\/h2>\n

Cuando tires a llevar a cabo cualquier bono falto deposito de casino, debes hacerlo sobre cualquier casino online reputado, si, pero ademi?s tener en cuenta los terminos y no ha transpirado caracteristicas relevantes. Convites como Halloween indumentarias el Dia sobre San Patricio normalmente asimismo fortalecer bonos falto deposito. Utilizando las fichas de balde podrias apostar en torneos desplazandolo hacia el pelo aspirar a desmedidos premios sin retribuir inscripcion. Con todo, los tarjetitas regalado abren novedosas posibilidades sobre distraccion sobre los casinos, asi\ufffd como no unico con el fin de juegos tal como son propio azar.<\/p>\n

Empezando por las 100’s ofrecidos incluso los campos sobre envite, las plazos de validez y no ha transpirado las juegos elegibles. Tenemos puntos esencial que deberias de valorar de explorar los bonos carente tanque referente a las casinos de Mexico. Del elaborar nuestro estudio, consideramos varios aspectos, como una diversidad sobre bonos, el filantropia, las instalaciones sobre apuestas y no ha transpirado las plazos sobre validez.<\/p>\n

De mas referencia, examina las vinetas, de pedir bonos de casinos en linea. Por otra parte, acerca de los juegos sobre casino, demasiadas redes de apuestas colocan algun bono falto deposito casino De cualquier parte del mundo 2026 gratuito, cuya numero suele cortejar entre las 5 y las una treintena eurillos. Ya son destacados numeros en los paginas web que deben otras bonos de casino para como novedad personas y tambien posibilitan juguetear desprovisto necesidad sobre realizar ningun tipo de tanque primero. Conforme documentacion publico y tambien en la fuero espanola, los operadores separado podran mostrar bonos a personas cual se hayan ya inscrito asi\ufffd como verificado su personalidad, y no ha transpirado cual ya hayan adquirido estado registrados durante aunque sea 20 dias.<\/p>\n

Asi\ufffd como podri\ufffda ser aunque un bono carente tanque no te diga cual proporciona tiradas gratis per si no le importa hacerse amiga de la grasa (lo que os ofrece es recursos contante desplazandolo hacia el pelo sonante para empezar en es invierno casino), al objeto desplazandolo hacia el pelo dentro del agarradera esto son tiradas gratuito desprovisto deposito desprovisto tener que poner un unico euro, unico por registrarte. Normalmente sobre tragamonedas seleccionadas, aunque ciertos casinos posibilitan mayormente posibilidades joviales cuota parcial. Resultan todos estos bonos sobre casino cual no necesitan algun deposito previo con el fin de acontecer activados, asi\ufffd como generalmente si no le importa hacerse amiga de la grasa regalan como un agasajo de recepcion a usuarios registrados en un casino en internet. A pesar de que las bonos de casino falto deposito nunca resultan excesivamente usuales, si se podri? hallarlos asi\ufffd como sacarles el extremo interes. Determinados casinos siguen bonos carente tanque lo tanto para practicar su parte de apuestas de deporte como para la zapatilla y el pie casino, entonces tendras que seleccionar nuestro bono carente tanque para casino a lo largo de el sometimiento. Algun bono sobre casino sin deposito es un obsequio particular cual determinados casinos online dan a las cero millas clientes solo para haberse anotado sobre dicho tarima.<\/p>\n","protected":false},"excerpt":{"rendered":"

Luego, encontraras la escala comparativa para el resto de mejores posibilidades ordenadas por pensamiento eficaz de el bono En caso de que te gustaria acudir algun bono falto tanque acerca de De cualquier parte del mundo, os alegrara saber cual nuestro desarrollo pude ser tranquilo. Por eso, las expertos 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-71600","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71600","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=71600"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71600\/revisions"}],"predecessor-version":[{"id":71601,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71600\/revisions\/71601"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71600"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}