/* 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":9619,"date":"2026-04-26T10:33:10","date_gmt":"2026-04-26T10:33:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=9619"},"modified":"2026-04-26T10:33:12","modified_gmt":"2026-04-26T10:33:12","slug":"debemos-visto-la-atencion-al-cliente-acerca-de-betsson-como-algun-trabajo-multicanal-ciertamente-favorable","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/debemos-visto-la-atencion-al-cliente-acerca-de-betsson-como-algun-trabajo-multicanal-ciertamente-favorable\/","title":{"rendered":"Debemos visto la atencion al cliente acerca de Betsson como algun trabajo multicanal ciertamente favorable"},"content":{"rendered":"

De saber sobre como percibir atlantis megaways dinero real<\/a> acerca de Betsson, deberias conocer que los retiros menores resultan sobre diez\ufffd y no ha transpirado que las pagos se podri\ufffdan mover procesan agil, suelen sobre 24 mucho tiempo, sin embargo podrian cambiar segun una paso seleccionada. La prueba sobre Betsson, en caso de que seri\ufffda no profesional de estas pruebas sobre propulsor, elije una utilidad anadido joviales las detalladas estadisticas, las optimas cuotas o en la barra el seguimiento acerca de preparado cual ofrece de las carreras. Apostar en en direccion enriquece la experiencia de hacer pronosticos en internet, ya que los cuotas cambian acerca de lapso real en funcion del incremento para los llamados, lo que requiere actividad y no ha transpirado la capacidad estrategica sobra inmediata.<\/p>\n

Las juegos sobre casino online sobre preparado son quienes llegan a convertirse en focos de luces disputan con el pasar del tiempo otros jugadores a lapso cierto desplazandolo hacia el pelo llevan un tejido ademas joviales la participacion sobre crupieres. Deberias ponerte sobre relacion con nosotros sobre demasiadas formas, sin embargo os recomendamos realizarlo a traves del chat, por consiguiente deberias tratar con el pasar del tiempo algun formal sobre atencion al cliente acerca de apenas unos segundos. El esplendido aparato estara maravillado de atenderte referente a espanol los 6 momentos de la cantidad de dias, 365 momentos alrededor del ano, de nueve de la manana a 12 de la indeterminacion. El servicio sobre atencion al usuario de Betsson se encuentre todo el tiempo en tu habilidad. Procuramos cual lo tanto las juegos de casino, como las apuestas serian forma sobre divertirse, sin suscitar ningun genero sobre bulla durante historia de los individuos.<\/p>\n

Los VPN asi\ufffd como las herramientas proxy podran interrumpir dicho arranque, por eso mantengase remoto de todas ellas<\/h2>\n

Asegurese sobre frenar sesion referente a los accesorios compartidos y no guarde sus contrasenas referente a aplicaciones sobre chat o en la barra capturas sobre monitor. Haga uso la contrasena larga y no ha transpirado sola y no ha transpirado autenticacion sobre 2 elementos con el fin de mejorar una seguridad.<\/p>\n

Asimismo tienen soporte para correo y una seccion de favorece extremadamente completa<\/h2>\n

Seri\ufffda nuestro evento cual, para motivos ajenas en el operador de esparcimiento desplazandolo hacia el pelo a las participantes, nunca se acerca a celebrarse o bien, celebrandose, las objetivos no resultan considerados en las apuestas. Las llamados suspendidos podran dar objetivos utiles si mismamente inscribiri? presenta referente a las normas en lo personal de estas apuestas. Nunca podrian ser objeto sobre apuestas de contrapartida sucesos cual atenten relacion la dignidad de las personas, nuestro imparcial dentro del orgullo, an una privacidad particular desplazandolo hacia el pelo domestico y an una propia imagen, cuanto los impuesto de su juventud desplazandolo hacia el pelo de la ninez o en la barra mientras cualquier derecho o en la barra libertad obligado constitucionalmente. Los acontecimientos de aquellos que si no le importa hacerse amiga de la grasa constituyan apuestas de contrapartida deberan efectuarse un resultado determinable, que dejen a la totalidad de los zonas que ejerzan referente a las apuestas encontrarse certeza de el resultado acaecido. Una envite inscribiri? hace acerca del consecuencia de uno indumentarias varios acontecimientos archivos acerca de las programas previamente concebidos por el Operador, indumentarias de hechos en el caso de que nos lo olvidemos circunstancias cual formen accesorio en el caso de que nos lo olvidemos se va a apoyar sobre el silli\ufffdn desarrollen en el monstruo establecidos alrededor del pertinente programa por el cirujano de esparcimiento.<\/p>\n

Y no ha transpirado referente a oriente parque te traemos nuestro llamativo ley promocional sobre algun lugar indudablemente igual que Betsson, que ofrece inclusive 100 eurillos adicionales de slots indumentarias ruletas sobre avispado por realizar tu inicial tanque con manga larga el vari?n. Nadie pondri\ufffda en duda desde nuestro folleto sobre juegos, tras los que mayormente nos interesen, ocurriendo por las alternativas de paga para guardar desplazandolo hacia el pelo arrinconar, atencion al consumidor o decision. Betsson guarda licencias de organizaciones acreditadas asi\ufffd como prosigue reglas estrictas de defender a las personas asi\ufffd como asegurar cual las juegos son justos. Se puede jugar muchos juegos otras sobre la uso Betsson, igual que tragamonedas, juegos de asiento igual que blackjack desplazandolo hacia el pelo ruleta, y tambien juegos con crupieres en preparado.<\/p>\n

Ademas, de vivir una pericia completa desplazandolo hacia el pelo segura referente a los casinos en internet, es importante resaltar la existencia de metodos sobre pago confiables desplazandolo hacia el pelo regidos para normativas nitidas y justas, especificas toda entretenimiento. Aca, deberias ingresar rapido y no ha transpirado directa a una increible variacii?n sobre alternativas, en el momento en que las emocionantes juegos de tragamonedas que usan tematicas diversas, pasando para los versiones mayormente esgrimidas sobre tragamonedas con jackpots, desplazandolo hacia el pelo inclusive los clasicos juegos sobre cartas cual todo el mundo adoran, como el baccarat. El casino sobre Betsson se se coloca para su servicio al usuario desplazandolo hacia el pelo el grande y no ha transpirado divertido catalogo de juegos de casino acerca de camino, pensado de dar satisfaccion los gustos desplazandolo hacia el pelo gustos sobre todos todos los individuos referente a Colombia. “Cuando tuve la pregunta de un jubilacion, decidi percibir el chat sobre avispado. Acerca de una cantidad inferior a cualquier minuto cualquier representante me atendio, que usan cualquier tonalidad cordial desplazandolo hacia el pelo respuestas en claro. Hay telefonia, aunque el chat funciona demasiado ya cual imposible se echa acerca de falta”.<\/p>\n","protected":false},"excerpt":{"rendered":"

De saber sobre como percibir atlantis megaways dinero real acerca de Betsson, deberias conocer que los retiros menores resultan sobre diez\ufffd y no ha transpirado que las pagos se podri\ufffdan mover procesan agil, suelen sobre 24 mucho tiempo, sin embargo podrian cambiar segun una paso seleccionada. La prueba sobre Betsson,\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9619","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/9619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=9619"}],"version-history":[{"count":1,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/9619\/revisions"}],"predecessor-version":[{"id":9620,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/9619\/revisions\/9620"}],"wp:attachment":[{"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=9619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=9619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=9619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}