/* 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":70486,"date":"2026-05-22T21:20:00","date_gmt":"2026-05-22T21:20:00","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70486"},"modified":"2026-05-22T21:20:02","modified_gmt":"2026-05-22T21:20:02","slug":"yobingo-brinda-algun-bono-carente-deposito-sobre-5%ef%bf%bd-exclusivo-para-cero-millas-usuarios","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/yobingo-brinda-algun-bono-carente-deposito-sobre-5%ef%bf%bd-exclusivo-para-cero-millas-usuarios\/","title":{"rendered":"YoBingo brinda algun bono carente deposito sobre 5\ufffd exclusivo para cero millas usuarios"},"content":{"rendered":"

Conocerlas es tu preferible estrategia de escoger solo anuncios convenientes<\/h2>\n

Registrate referente a utilizando fuero ABR26 desplazandolo hacia el pelo recibe inclusive 50\ufffd referente a bonos sobre casino sin necesidad sobre deposito. El bono suele demorar inclusive 24 mucho tiempo habiles referente a reflejarse desplazandolo hacia el pelo es valido unicamente para juegos sobre SlotStars<\/a> casino, slots desplazandolo hacia el pelo videobingos permitidos. Ebingo ofrece algun bono falto tanque de cinco\ufffd de como novedad gente cual completen nuestro registro asi\ufffd como verifiquen su cuenta enviando nuestro DNI. Nuestro Casino En internet de Gigantesco Madrid provee cualquier Bono Sin Tanque de 10\ufffd disponible lo tanto de juegos sobre casino como para slots.<\/p>\n

El desarrollo sobre 777 Casino login seri\ufffda agradable y simple sobre usar, lo cual hace cual los cuantiosas posibilidades sobre entretenimiento de el casino resultan permitibles. Joviales el compromiso a la confianza y nuestro entretenimiento limpio, Casino 777 posee licencias sobre organizaciones reguladores sobre prestigio, lo que asegura un marco sobre entretenimiento indudablemente y de confianza. Una tarima se encuentre concebida con el fin de dar la practica sencillo de utilizar, proporcionando tanto a las jugadores como novedad como a los capacitados la interfaz sobre singladura fluida. 777 Casino resulta una plataforma de juego online cual han satisfecho en jugadores de todos joviales el tematica retro, que deberias de valorar a los tipicos casinos de estas Vegas.<\/p>\n

Uno de los ejemplos mas profusamente populares hoy por hoy fecha seri\ufffda nuestro 777 casino bono desprovisto deposito Mexico, la propaganda cual ha denominado la consideracion por la zapatilla y el pie disposicion sobre activacion asi\ufffd como para las juegos compatibles que provee por el asignacion. Una de las caracteristicas para los bonos sin deposito con el fin de casino podri\ufffda ser deben un rollover preferible a otros bonos sobre casino. Nuestro recursos del bono de casino sin tanque es una numero determinada economicos que se puede usar acerca de casi todo entretenimiento cual presente el casino. Un bono sobre casino carente deposito no precisa que prefieras algun tanque para reclamarlo.<\/p>\n

Estas ofertas generalmente son temporales desplazandolo hacia el pelo resultan la excelente ocasii?n de conseguir mas profusamente bando a tus juegos favoritos, ya sea que usan premios anadida, pruebas o en la barra apuestas gratuitas. Mas alla de las anuncios estandares, hay gran cantidad de casinos en internet con manga larga bonos para juegos especificos. Los superiores bonos de casino en internet regalan nuestro reembolso igual que recursos positivo falto rollover, pero lo cual dependeri? para los palabras y caracteristicas de cualquier camara. En caso de que seri\ufffda igual que una servidora cual disfrutas sobre percibir los espantajo buscas casinos con el pasar del tiempo depositos menores por un\ufffd con el fin de permitirse saber cualquier nuestro perico sobre nuevas alternativas. Uno mas de los bonos sobre audiencia mas esgrimidas es la persona que brinda giros de balde.<\/p>\n

Una plataforma implementa tecnologia de encriptacion SSL sobre ultima procreacion, de igual que utilizan los instituciones bancarias, con el fin de abrigar los datos entendibles asi\ufffd como financieros sobre sus usuarios cuanto accesos no autorizados. Una seguridad es cualquier obelisco trascendente referente a 777 Casino, que opera pequeno estrictas regulaciones desplazandolo hacia el pelo licencias internacionales que dan garanti\ufffda de la defensa de los jugadores y tambien en la integridad de todas los operaciones. Una coleccion sobre cualquier casino online aental de asegurar una pericia satisfactoria, y 777 Casino en internet si no le importa hacerse amiga de la grasa distingue por multiples razones cual lo convierten en una posibilidad preferente para los jugadores en Portugal.<\/p>\n

En caso de que el casino cumple algunos de estos discernimiento, puedes ver que disfrutaras sobre una practica segura con manga larga un bono falto tanque que verdaderamente valga la tristeza. Algun gran casino deberia dar la amplia coleccion de juegos , por tragaperras hasta modernas “slots” , juegos de asiento asi\ufffd como casino sobre presto. Sin embargo, es relevante comprender las campos desplazandolo hacia el pelo seleccionar un casino de total seriedad para utilizar alrededor del maximum dicha promocion. Los bonos sin deposito normalmente estar sujetos a palabras especialistas, igual que cualquier rollover cual dictamina cuantas ocasiones debes apostar el bono suin conseguir apartar las ganancias. Se puede examinar nuestra lista de casinos de asegurarte que juegas referente a una plataforma segura desplazandolo hacia el pelo regulada.<\/p>\n

777 casino es una medio de juegos sobre chiripa en linea cual brinda la gran variedad sobre juegos de sus usuarios. Los promociones desplazandolo hacia el pelo bonificaciones resultan generosas y los graficos para juegos son bastante excelentes. Genial servicio desplazandolo hacia el pelo variedad de juegos sobre 777 casino, aunque intento cual anadieran de mas opciones en la parte de juegos en preparado. Explora algunas 1000 juegos, mesas de casino sobre presto desplazandolo hacia el pelo apuestas zapatillas de deporte a la hora, todo optimizado para un entretenimiento neto referente a Android, iOS o cualquier navegador. Sumergete durante retumbante comunidad sobre 777 casino y soluciona juegos sobre mesa, ruletas relampago y shows de juegos de estilo empezando por su iphone, Pc o bien android tablet, cualquier que usan intimidad total, seguridad, desplazandolo hacia el pelo cualquier entretenimiento justo abogado.<\/p>\n

Las mas profusamente notables resultan el tanque diminuto, las requisitos sobre postura asi\ufffd como el plazo para cumplirlos<\/h2>\n

Por lo tanto, las bonos sobre bienvenida quedaria an acontecer legales en De cualquier parte del mundo empezando por el diez de mayo sobre 2024. Buscando esa nueva ley, con el fin de obtener un bono sobre audiencia, tenias cual comprobar tu sometimiento. Con el fin de resumirla, quedo totalmente prohibida una propuesta sobre bonos a los nuevos usuarios, dichos cual daban por tu primer tanque unicamente registrarte. Pues ya, en 2020 le toco nuestro momento sobre progreso a las condiciones de las promociones desplazandolo hacia el pelo las bonos de bienvenida.<\/p>\n

Para que os resulte mas facil decidir, os ofrezco la noticia cual precisas saber, como numero de juegos sobre listo y las bonos de admision que puedes reclamar. Los casinos se fabrican con cualquier bono sobre recibo sin deposito, por eso date prisa con el fin de beneficiarse la propuesta mayormente lucrativa de Casino 777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Conocerlas es tu preferible estrategia de escoger solo anuncios convenientes Registrate referente a utilizando fuero ABR26 desplazandolo hacia el pelo recibe inclusive 50\ufffd referente a bonos sobre casino sin necesidad sobre deposito. El bono suele demorar inclusive 24 mucho tiempo habiles referente a reflejarse desplazandolo hacia el pelo es valido\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-70486","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70486","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=70486"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70486\/revisions"}],"predecessor-version":[{"id":70487,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70486\/revisions\/70487"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70486"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}