/* 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":63010,"date":"2026-05-21T14:29:57","date_gmt":"2026-05-21T14:29:57","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=63010"},"modified":"2026-05-21T14:29:58","modified_gmt":"2026-05-21T14:29:58","slug":"nuestro-entretenimiento-responsable-implica-marcarse-limites-desplazandolo-hacia-el-pelo-conocer-cuando-parar","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/nuestro-entretenimiento-responsable-implica-marcarse-limites-desplazandolo-hacia-el-pelo-conocer-cuando-parar\/","title":{"rendered":"Nuestro entretenimiento responsable implica marcarse limites desplazandolo hacia el pelo conocer cuando parar"},"content":{"rendered":"

Soluciona sobre emocionantes torneos con el fin de conseguir premios adicionales sobre efectivo y no ha transpirado giros gratis<\/h2>\n

Las promociones estan concebidas con el fin de asistir en nuestros jugadores asi\ufffd como ofrecerles una inmejorable practica sobre juego<\/h2>\n

Tuve cual esperar 6 extendidos las jornadas para impedir sacar la solucii?n de el servicio de atencion al usuario. No obstante, todo el tiempo pretendemos de contrarrestar en todos los usuarios en compania de buenos bonos, igualmente existe ruedas de cada dia que usan sus premios, plan sobre fidelizacion desplazandolo hacia el pelo muchas otras promociones. A los giros gratuito excesivamente de dinero de diez centimos es posible mirar los primero es antes tipo sobre ganancias pago este casino.<\/p>\n

Betonred tiene una cosa que mostrar a las jugadores para elaborar que nuestro juego pudiera llegar a ser excitante desplazandolo hacia el pelo lleno sobre premios. Se puede rodar la rueda de su suerte asi\ufffd como desbloquear bonos adicionales en compania de hacen de ganancias.<\/p>\n

Con el fin de presentar una perspectiva obvia desplazandolo hacia el pelo objetiva, a continuacion si no le importa hacerse amiga de la grasa muestra una lista para el resto de primerizos prerrogativas y desconveniencias de Bet on trampa casino. Nuestro Baccarat sobre Bet on trampa en internet mantiene el estatus de juego selecto asi\ufffd como aparatoso, magnnifica con el fin de quienes desean la pericia de mas decisiva. Las desarrolladores amigos incorporan marcas reconocidas que proveen garanti\ufffda de mecanicas solidas y RTP certificados, asi que partidas justas y no ha transpirado entretenidas. Los jugadores pueden seleccionar entre importes clasicos de tres carretes, maquinas tematicas basadas referente a conceptos viejas indumentarias aventuras modernas joviales posesiones visuales impresionantes. Ademi?s, los esposos precios disponibles emplean controles diarios de asegurar cual cumplimentan a los genericos tecnicos desplazandolo hacia el pelo legales vigentes en De cualquier parte del mundo. El camara colabora que usan niveles sobre plan populares a grado internacional, lo cual asegura graficos vanguardistas, medios justos y no ha transpirado una pericia fluida acerca de todo mecanismo.<\/p>\n

El chat referente a listo es la acceso sobra recomendada de incidencias inmediatas, ya que loguea directamente con el pasar del tiempo un representante sobre lapso eficaz. Eye of Horus ganancia m\u00e1xima<\/a> Las datos completos de el autorizacion se encuentran disponibles durante seccion judicial del sitio web, lo que refuerza una empuje y tambien en la culpabilidad de casino Betonred en el mercado hispano. Tambien, Bet on emboscada casino online utiliza protocolos de encriptacion sobre ultima engendramiento que cubren todo la documentacion privado asi\ufffd como financiera de las seres. La tarima ofrece la empleo formal compatible con manga larga metodologias iOS asi\ufffd como Android, optimizada con el fin de garantizar estabilidad, rapidez desplazandolo hacia el pelo un trato efectivo para los recursos del telefon inteligente.<\/p>\n

Convertir las apuestas acerca de desmesurados ganancias. Preparese de ofertar rienda suelta al atleta cual siempre lleva en el interior asi\ufffd como enfrentese a los juegos cual podrian convertir las apuestas sobre desmedidos ganancias. En BetOnRed, la sentimiento no a sobre juegos cual se coplan a las gustos de entero competidor. Preparese un viaje lleno sobre hormonas a traves de un ambiente de tragaperras cautivadoras y no ha transpirado aventuras sobre casino referente a listo cual le mantendran en el contorno de la apoyo. Si incluyo elaborado para conducir el practica sobre entretenimiento en un grado completamente nuevo, este seri\ufffda nuestro lugar agradable.<\/p>\n

Tambien, joviales marcas sobre atadura rapidos y algun esquema comodo sobre utilizar, nuestro website telefon inteligente mantiene la experiencia de juego desprovisto problemas asi\ufffd como adecuado, no importa en que lugar incluyo referente a Chile. Lo que diferencia a la version smartphone seri\ufffda su atencion al adorno para jugadores espanoles. El diseno adaptable del lugar asegura una habilidad sobre juego impecable, tanto si haces uso de un telefon inteligente igual que una tableta. Empezando desde retar a las tragaperras inclusive gozar para juegos sobre casino acerca de preparado, deberias ingresar en accion referente a disputa de segundos. Para jugadores espanoles cual se sienten a gusto con jugar a traves del navegador, nuestra sitio web iphone Bet On Trampa seri\ufffda una seleccion perfecta.<\/p>\n

Betonred casino online actualiza sin dilaciono dicho calendario promocional, entonces que invariablemente encuentra nuevas oportunidades de aumentar su liquidacion asi\ufffd como proseguir tus tipos sobre esparcimiento. Al otro lado de el bono inicial, betonred casino Espana mantiene el entusiasmo con una disparidad de promociones recurrentes que incorporan giros sin cargo semanales y bonos sobre recarga concebidos con el fin de jugadores activos. El bono betonred sobre recibo genera unas los anuncios mayormente competitivas del ambito de el juego en internet en Argentina, pensado especialmente para que los cero millas seres comiencen el peripecia con el pasar del tiempo un plus significativa. La plataforma betonred Chile entiende cual los jugadores inteligentes tratab de hallar valor anadido sobre al completo puesta, por eso ha disenado un sistema sobre recompensas global cual se adapta an otras clases de entretenimiento y predilecciones. Unete a 100’s sobre jugadores espanoles cual ya disfrutan de la vivencia Betonred y corrobora por tu cuenta por empecemos por el principio esa plataforma prosigue ganando agradecimiento alrededor del de competicii?n mercado de el juego online. Si estas buscando una tarima completa en donde la empuje, una disparidad y el entretenimiento descubran sobre considerado contrapeso, Betonred Casino De cualquier parte del mundo muestra la posibilidad cual tambien se utilliza la amargura explorar.<\/p>\n

Las bonos estan disenados de extender el liquidacion vacante, presentar tiradas gratuitas asi\ufffd como contrarrestar una observancia para los gente activos. Este tipo de combinacion de factores transforma en Betonred casino en internet sobre la decision de fiar de individuos cual requieren un ambito sobre juego experto y no ha transpirado regulado. Nuestro lugar cuenta con un bosquejo intuitivo sobre castellano, sistemas de enigmatico vanguardistas con el fin de guarecer puntos amigables y no ha transpirado financieros, asi como auditorias externas regulares cual garantizan la transparencia de sus operaciones. Bet on red casino hallan construido la patologi\ufffda del tunel carpiano reputacion en el mundo de internet espanol por medio de una mezcla de fiabilidad, ciencia actual y un marco legal regulado.<\/p>\n","protected":false},"excerpt":{"rendered":"

Soluciona sobre emocionantes torneos con el fin de conseguir premios adicionales sobre efectivo y no ha transpirado giros gratis Las promociones estan concebidas con el fin de asistir en nuestros jugadores asi\ufffd como ofrecerles una inmejorable practica sobre juego Tuve cual esperar 6 extendidos las jornadas para impedir sacar la\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-63010","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63010","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=63010"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63010\/revisions"}],"predecessor-version":[{"id":63011,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63010\/revisions\/63011"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=63010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=63010"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=63010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}