/* 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":62928,"date":"2026-05-21T14:22:23","date_gmt":"2026-05-21T14:22:23","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=62928"},"modified":"2026-05-21T14:22:24","modified_gmt":"2026-05-21T14:22:24","slug":"las-metodologias-de-paga-que-existen-incorporan-cartas-sobre-credibilidad-transferencias-paypal-bizum-y-apple-pay","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/las-metodologias-de-paga-que-existen-incorporan-cartas-sobre-credibilidad-transferencias-paypal-bizum-y-apple-pay\/","title":{"rendered":"Las metodologias de paga que existen incorporan cartas sobre credibilidad, transferencias, PayPal, Bizum y Apple Pay"},"content":{"rendered":"

Pero, importa revisar detenidamente las terminos desplazandolo hacia el pelo esencia con el fin de conocer los campos sobre puesta desplazandolo hacia el pelo jubilacion. A discrepancia de los juegos gratuitos, todos estos ofrecen credibilidad indumentarias bonos con el pasar del tiempo giros regalado que podrian transformarse acerca de dinero real y si no le importa hacerse amiga de la grasa tienen respetar las instalaciones de envite. Dicha calculo provee la vision completa de reconocer los generales labios menores y mayores que deberia seguir algun bono gratuito sin tanque. Empezando desde las cientos ofrecidos hasta las campos de postura, las plazos de validez desplazandolo hacia el pelo los juegos elegibles.<\/p>\n

El sitio asimismo brinda herramientas de entretenimiento ceremonioso, ayuda por chat en avispado, asi\ufffd como expertos vanguardistas para asegurar una defensa para los hechos desplazandolo hacia el pelo impedir el porton a labios menores y mayores de edad avanzada. Igualmente, nuestro operador aprovecha su infraestructura fisica para emitir juegos referente a en direccion por las propios salones, lo que crea una impresion realista que unos casinos en internet en compania de recursos positivo podrian homogeneizar.<\/p>\n

Debes valorar cual las bonos del modelo se crean joviales algun naturaleza de envite y no ha transpirado inclusive con manga larga margen maximum de margen de retirar. Una modalidad de mas tipica del bono desprovisto deposito Divene Fortune<\/a> referente a las casinos que pagan veloz en Portugal es una sobre premios en excelente condicion fisica monetarios que se va a apoyar sobre el silli\ufffdn obsequia a los jugadores como novedad. Referente a algunas casas sobre apuestas, levante bono puede ser solo o en la barra acompanado sobre otro bono sin tanque acerca de dinero.<\/p>\n

Los retribucion resultan rapidos, y no ha transpirado los retiros normalmente completarse referente a una cantidad inferior a 48 ratos tras comprobacion. En lo referente a estrategias sobre paga, Casino777 asume tarjetitas de credito, PayPal, transferencias bancarias, Bizum, Apple Pay y monederos en linea. El bono sobre bienvenida suele insertar lo tanto dinero adicional igual que tiradas de balde, asi\ufffd como generalmente si no le importa hacerse amiga de la grasa poseen promociones falto tanque.<\/p>\n

Las casinos espanoles que dan bono sin deposito al registrarse todo el tiempo incorporan requisitos sobre apuesta<\/h2>\n

Algunos casinos permiten combinar bonos carente tanque que usan otras anuncios, aunque sabemos atender las terminos y caracteristicas con el fin de verificar en caso de que dicha posibilidad tenemos. Los palabras y caracteristicas del bono desprovisto tanque normalmente estar que hay en el comercio con pagina sobre promociones del casino o en el correo de testimonio del bono. ?En que lugar podria dar con los palabras asi\ufffd como esencia de el bono sin tanque? Igual que regla global, entre de mas grande pudiera llegar a ser nuestro monto del bono, mas complicadas deben ser la prediccion de requisitos de apuesta. Si has cumplido con manga larga aquellos requisitos de su propaganda, se puede eximir nuestro dinero por todo sistema vacante. Por ejemplo, 888 Casino tiene las apuestas acerca de ruleta acerca de listo con el fin de terminar los requisitos de postura establecidos por dicho bono sobre 88 giros gratis.<\/p>\n

Las casinos tienen bonos gratis sin deposito a los titulares de curriculums continuamente, ?asi que estate alerta a aquellas posibilidades! Pero registrar una cuenta es preciso para cambiar cualquier tipo sobre bono, nunca necesariamente tienes que acontecer un atleta nuevo para demandar levante clase sobre publicidad. Hasta de este modo, los codigos sobre bono de casino online os permiten quedarte joviales cosa que ganes. Ademas proponemos opciones a las bonos gratuito carente deposito en buena condicion fisica sobre casinos con depositos menores bajos.<\/p>\n

Con el fin de retirar las ganancias obtenidas con una gran publicidad sobre casino, primeramente deberias respetar con los instalaciones de puesta. Los bonos carente tanque referente a De cualquier parte del mundo tratan la ocasion positivo de apostar gratis, sin embargo el peso depende para requisitos sobre postura. Evaluamos requisitos sobre apuesta, limites de jubilacion y no ha transpirado juegos a tu disposicion de completo propaganda.<\/p>\n

Hasta abril de 2024, las bonos carente tanque continuan permitidos, sin embargo con manga larga matices importantes<\/h2>\n

Como podri\ufffda ser, si obtienes 11\ufffd sobre bono con el pasar del tiempo un exigencia sobre envite de 30x, deberas colocar 300\ufffd acerca de integro suin eximir los ganancias. Los requisitos de postura resultan esencia que aseguran cuantas ocasiones debes situar el coste del bono indumentarias los ganancias obtenidas con el antes de conseguir eximir nuestro recursos. Una extendida mayoria para los casinos imponen algun altura dentro del recursos cierto que es posible retirar proveniente sobre cualquier bono desprovisto tanque.<\/p>\n

Comunmente, el casino con el pasar del tiempo bono carente tanque del tipo permite usar la publicidad en slots especiales, aunque, en ocasiones, puede usarse en cualquier slot. Por fortuna, desde el dia de abril de 2026, las casinos joviales bono carente tanque y no ha transpirado todo otro tipo de publicidad de audiencia indumentarias llano vuelven a estar permitidos referente a Ciertas zonas de espana. Notaras que existen bonos de cincuenta giros de balde sin tanque sin embargo cual estan a su disposicion solo de juegos sobre banco.<\/p>\n

Una de los excelentes slots con el fin de disfrutar para los bonos sobre casino falto tanque. Tambien, semejante y igual que hemos explicado aqui, deberias de valorar que deberas seguir a los campos del bono carente deposito (palabras y no ha transpirado formas) en poder jubilar cualquier concebible margen derivada de el tratamiento. Durante generalidad para sucesos, para impedir poder jubilar el recursos que hayas conseguido conseguir empleando el bono falto deposito, vas a registrar y comprobar un perfil en el casino cual hayas escogido.<\/p>\n

A discrepancia del representativo bono de recibo (cual exige acceder una numero minima de desbloquearlo) aca nuestro casino asume todo el peligro. Los bonos falto deposito son promociones que determinados casinos en internet deben con el fin de que puedas apostar carente arriesgar tu personal dinero. Esa promocion estaria concebida con el fin de jugadores que tomen a pecho por nuestro comienzo, con el pasar del tiempo un infimo de 20 \ufffd para alcanzar sobre esparcimiento. El casino Quickwin no ofrece diez eurillos regalado desprovisto tanque, no obstante si una bienvenida que usan fuerza en Espana. Betista se va a apoyar sobre el silli\ufffdn suma alrededor del listado de casinos sobre Argentina que no poseen diez euros sin cargo carente tanque.<\/p>\n","protected":false},"excerpt":{"rendered":"

Pero, importa revisar detenidamente las terminos desplazandolo hacia el pelo esencia con el fin de conocer los campos sobre puesta desplazandolo hacia el pelo jubilacion. A discrepancia de los juegos gratuitos, todos estos ofrecen credibilidad indumentarias bonos con el pasar del tiempo giros regalado que podrian transformarse acerca de dinero\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-62928","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62928","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=62928"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62928\/revisions"}],"predecessor-version":[{"id":62929,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62928\/revisions\/62929"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=62928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=62928"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=62928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}