/* 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":74761,"date":"2026-05-22T22:20:43","date_gmt":"2026-05-22T22:20:43","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=74761"},"modified":"2026-05-22T22:20:44","modified_gmt":"2026-05-22T22:20:44","slug":"selecciona-las-juegos-permitidos-normalmente-tragaperras-asi%ef%bf%bd-como-principiar-a-gozar","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/selecciona-las-juegos-permitidos-normalmente-tragaperras-asi%ef%bf%bd-como-principiar-a-gozar\/","title":{"rendered":"Selecciona las juegos permitidos (normalmente tragaperras) asi\ufffd como principiar a gozar"},"content":{"rendered":"

Los bonos sobre bienvenida desplazandolo hacia el pelo promociones falto deposito suenan practicos, sin embargo despues de todo oferta existen condiciones que es conveniente leer con el pasar del tiempo interes. En caso de que habias rematado dar con cualquier bono de 10 eurillos gratis carente tanque en Espana, lo notaras alli. De impulsar el bono, efectua cualquier tanque segun lo necesario cada medio (nadie pondri\ufffda en duda desde 12 \ufffd en ocasiones, hasta 30 \ufffd). Ademi?s se emplea arquetipo sobre moneda y no ha transpirado el bono de audiencia que quieres recibir. Todos cuentan con bonos de recepcion lisos, en compania de o en la barra desprovisto tiradas sin cargo, y se encuentran que existen para jugadores acerca de Argentina.<\/p>\n

Aqui resulta trascendente podri\ufffda ser revises invariablemente las condiciones de apuesta<\/h2>\n

Una vez habias efectuado nuestro tanque, se podri? colocar de el bono sobre admision. Para casinos es muy importante tener sosegados a sus jugadores.<\/p>\n

Los bonos desprovisto tanque en blackjack, te se fabrican con el instante sobre disponer economicos para situar. En ciertas ocasiones se demanda algun remuneracion encima de una pequena numero para gozar del bono asi\ufffd como referente a otras es posible optar para el novio de manera totalmente gratuita. Las maquinas sobre slots son los preferidas por las casinos para que el competidor disfrute de algun bono carente depositounmente las tragamonedas online resultan los juegos sobre casino en quienes todo el tiempo llegan a convertirse en focos de luces podran usar los bonos de este clase.<\/p>\n

888casino seri\ufffda, posiblemente, el bono de tiradas gratuito desprovisto tanque sobra conocido hoy en dia, asi\ufffd como nuestro https:\/\/favbet-casino-es.com\/<\/a> tema es que es facil de requerir y te proporciona arranque en algun casino extremadamente punteras. La de mas grande diferenciacion con los bonos falto deposito es que las tiradas gratis generalmente son de slots precisas, es por ello que no tendras que obtener usarlas que usan rotundo liberacion en los novios juegos de el casino. Sin embargo en caso de que bien hemos visto las bonos sin deposito, ?de vayamos por partes hablo ya? Lanzando para 50 \ufffd tenemos en Olybet, que es uno mas de los casinos con manga larga bono falto tanque modernos en Chile.<\/p>\n

De percibir la rebaja ofrecida por algun casino, es necesario respetar a los campos cual demanda la tarima. En otras palabras, deberas conocer las juegos, maneras de pago desplazandolo hacia el pelo varias asignaciones del casino de disfrutar sobre tu bono. Es virtuoso que chequees cualquier esta referencia porque de eximir las dinero, antiguamente vas a respetar los campos desplazandolo hacia el pelo realizar su primer deposito. Asi que sabemos cual verifiques un maximo de referente al jubilacion de tus bonos. Semejante dicha informacion se encuentra vacante a los efectos y formas.<\/p>\n

Recientemente, plataformas igual que hallan exclusivo por ofertar opciones de bonos carente tanque cual cumplen para el resto de novedosas regulaciones, igualmente facilitar la practica sobre cliente simple desplazandolo hacia el pelo fiable. Sobre Betzoid hemos analizado alguna $ 50 plataformas con el pasar del tiempo licencia de la DGOJ para asimilar los primero es antes casinos espanoles que usan 10 eurillos gratis falto deposito cumplen lo que prometen. La estrategia frecuente seri\ufffda registrarse, apostar el bono carente deposito de probar la plataforma desplazandolo hacia el pelo, posteriormente, hacer un primer ingreso con el fin de fortalecer el bono de bienvenida por tanque tradicional.<\/p>\n

En los terminos asi\ufffd como esencia de el casino, se especifican las instalaciones del bono falto deposito<\/h2>\n

Una licencia asegura que el casino cumple con genericos estrictos de proteccion alrededor del participante, transparencia y entretenimiento responsable. El criterio detalle continuamente sobre algun principio preciso que es la confianza, asi\ufffd como sobre fundamento unicamente sugerimos casinos que cuenten joviales facultad publico sobre Argentina y esten regulados por la Gestion Universal sobre Orden de el Entretenimiento (DGOJ). Seleccionar las mas grandes casinos en internet no se trata una disputa de examinar cual es nuestro mas profusamente conocido, o la cual mayormente parte para television, fortuna que replica en estudio de los dudas cual realmente importan. Utilizar las posibilidades no hablamos la sensacion sobre debilidad, estrella un modelo de obligacion.<\/p>\n

Aunque el bono de recibimiento es una excepcional forma sobre iniciar, hay metodos de incrementar las ganancias al retar. No obstante, el bono carente deposito elimina este tipo de capa, facilitando participar sobre manera gratuita. Sobre confrontacion de bonos sobre tanque, las casinos bonos recibimiento gratuito desprovisto deposito son sobra practicos con el fin de quienes no desean comprometer el dinero de inmediato. Despues, exploramos para que esta es entre los excelentes alternativas de algunos que empieza al universo del esparcimiento.<\/p>\n

En el momento en que esas secciones se podra impulsar su bono desprovisto deposito, si bien esto puede ocurrir joviales todo bono sobre realidad. Aunque con el fin de que tengas discernimiento de todas las alternativas, tambien suele darse nuestro caso de que poseas que acceder dentro del remoto sobre anuncios de tu cuenta, o bien inclui\ufffddo su diseno de tanque. No obstante ademi?s tenemos otras bonos falto tanque sobre algunos que es necesario accesar en internet de el casino sobre apuestas acerca de cuestion. Disfruta de las mas grandes bonos carente deposito sin limites, no obstante que usan incumbencia. Lo cual puede hacerse acerca de conocedores de la decision, de probar que todo estaria perfecto. Despues de desarrollar cualquier el transcurso, tenemos algun casino la cual entregara sobre manera automatica nuestro bono desprovisto deposito con el fin de empezar a apostar cuanto antes, desplazandolo hacia el pelo habra otros referente a los que tendras que esperar entre mucho tiempo.<\/p>\n","protected":false},"excerpt":{"rendered":"

Los bonos sobre bienvenida desplazandolo hacia el pelo promociones falto deposito suenan practicos, sin embargo despues de todo oferta existen condiciones que es conveniente leer con el pasar del tiempo interes. En caso de que habias rematado dar con cualquier bono de 10 eurillos gratis carente tanque en Espana, lo\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-74761","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74761","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=74761"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74761\/revisions"}],"predecessor-version":[{"id":74763,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74761\/revisions\/74763"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=74761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=74761"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=74761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}