/* 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":70672,"date":"2026-05-22T21:27:50","date_gmt":"2026-05-22T21:27:50","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70672"},"modified":"2026-05-22T21:27:51","modified_gmt":"2026-05-22T21:27:51","slug":"yobingo-brinda-cualquier-bono-sin-deposito-de-cinco%ef%bf%bd-mero-de-como-novedad-seres","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/yobingo-brinda-cualquier-bono-sin-deposito-de-cinco%ef%bf%bd-mero-de-como-novedad-seres\/","title":{"rendered":"YoBingo brinda cualquier bono sin deposito de cinco\ufffd mero de como novedad seres"},"content":{"rendered":"

Conocerlas seri\ufffda su conveniente maniobra de seleccionar unicamente publicaciones aconsejables<\/h2>\n

Registrate acerca de mediante un estatuto ABR26 asi\ufffd como recibe inclusive cincuenta\ufffd sobre bonos sobre casino falto necesidad de tanque. Nuestro bono suele tardar hasta 24 muchas horas habiles referente a reflejarse asi\ufffd como seri\ufffda vigente solo de juegos sobre casino, slots y videobingos permitidos. Ebingo provee un bono desprovisto deposito sobre 5\ufffd de cero millas personas que completen el asignacion y no ha transpirado verifiquen su perfil transmitiendo nuestro DNI. Nuestro Casino En internet de Genial Madrid provee cualquier Bono Falto Deposito de 10\ufffd disponible tanto con el fin de juegos sobre casino por la cual slots.<\/p>\n

Nuestro proceso de 777 Casino login seri\ufffda confortable asi\ufffd como comodo de utilizar, lo que realiza que las numerosas alternativas sobre juego de el casino somos accesibles. Con manga larga dicho noviazgo con la empuje asi\ufffd como el esparcimiento higienico, Casino 777 cuenta con licencias de organizaciones reguladores de prestigio, lo cual asegura algun entorno sobre esparcimiento indudablemente asi\ufffd como especializada. La plataforma permanece fabricada de ofertar la experiencia sencillo sobre utilizar, proporcionando tanto a las jugadores recientes igual que a las capacitados una interfaz de navegacion fluida. 777 Casino resulta una tarima sobre entretenimiento en internet que deberian satisfecho en jugadores de todos con es invierno tematica retro, cual debes tener en cuenta a los clasicos casinos de las Vegas.<\/p>\n

Algunos de los ejem mas reconocidos en la actualidad dia seri\ufffda el Supacasi<\/a> 777 casino bono carente tanque Mexico, la propaganda cual han denominado la consideracion para la patologi\ufffda del tunel carpiano capacidad de activacion desplazandolo hacia el pelo para las juegos compatibles cual brinda por nuestro asignacion. Entre los factores de los bonos sin tanque de casino podri\ufffda ser deben algun rollover preferiblemente a otras bonos de casino. Nuestro recursos del bono de casino sin deposito resulta una numero verdad monetarios que puedes usar en casi cualquier esparcimiento cual ofrezca el casino. Un bono de casino carente deposito no precisa cual realizes algun deposito de reclamarlo.<\/p>\n

Estas ofertas generalmente son temporales y no ha transpirado son una excelente vez de conseguir de mas partido a tus juegos favoritos, ya sea con manga larga premios adicional, competiciones indumentarias apuestas gratuitas. Al otro lado de estas ofertas genericos, tenemos muchos casinos en internet joviales bonos de juegos especialistas. Las mas grandes bonos sobre casino online entregan el reembolso igual que recursos cierto sin rollover, pero esto va a depender para palabras y no ha transpirado caracteristicas de al completo camara. Si es igual que capacidad que disfrutas sobre experimentar las ente esti?s a punto de casinos en compania de depositos labios menores y mayores desde un\ufffd con el fin de permitirse conocer todo nuestro pericon de nuevas opciones. Uno mas de los bonos de recibo de mas usadas es la persona que provee giros regalado.<\/p>\n

Una medio implementa tecnologia de encriptacion SSL sobre ultima generacion, de la misma de las que hacen uso las cadenas bancarias, de guarecer aquellos datos personales y financieros de sus seres contra accesos no autorizados. La decision seri\ufffda cualquier pilar trascendente referente a 777 Casino, cual opera pobre estrictas regulaciones asi\ufffd como licencias internacionales cual proveen garanti\ufffda de la proteccion para los jugadores y la integridad de ellas los operaciones. La seleccion de cualquier casino online aental para garantizar la experiencia satisfactoria, y 777 Casino en internet se diferencia por multiples motivos cual lo permite referente a la opcion preferente para los jugadores acerca de Portugal.<\/p>\n

En caso de que el casino cumple varios de estos discernimiento, se podri? asegurarnos que disfrutaras de una experiencia fiable que usan un bono sin tanque que realmente valga la dolor. Algun genial casino tiene que presentar una gran seleccion de juegos , empezando por tragaperras inclusive novedosas “slots” , juegos de caja de ahorros desplazandolo hacia el pelo casino en listo. Sin embargo, es relevante comprender las requisitos desplazandolo hacia el pelo designar cualquier casino de confianza para beneficiarse dentro del maximo dicha propaganda. Los bonos carente deposito normalmente quedar entes a terminos especializados, como algun rollover que define cuantas veces debes colocar el bono para impedir permitirse jubilar los ganancias. Es posible repasar nuestra relacion sobre casinos para decirte que experimentas referente a una tarima segura desplazandolo hacia el pelo regulada.<\/p>\n

777 casino resulta una medio de juegos de casualidad en linea que provee la gran diversidad de juegos de las usuarios. Los promociones desplazandolo hacia el pelo bonificaciones resultan generosas y las graficos para los juegos resultan extremadamente buenos. Buen asistencia asi\ufffd como variacii?n sobre juegos acerca de 777 casino, no obstante intento que anadieran mayormente opciones durante division sobre juegos en presto. Explora alguna 1000 juegos, mesas de casino sobre avispado y apuestas zapatillas de deporte en el momento de, cualquier optimizado para un juego limpio acerca de Android, iOS u otra buscador. Sumergete durante potente humanidad sobre 777 casino asi\ufffd como soluciona juegos sobre entidad financiera, ruletas relampago y shows sobre juegos sobre moda nadie pondri\ufffda en duda desde tu movil, Sobre o bien android tablet, todo con privacidad pleno, confianza, desplazandolo hacia el pelo un juego exacto abogado.<\/p>\n

Las sobra importantes resultan nuestro tanque insignificante, los campos de puesta asi\ufffd como nuestro termino con el fin de cumplirlos<\/h2>\n

Entonces, las bonos sobre admision quedara a ser legales acerca de Chile empezando desde nuestro diez sobre abril sobre 2024. Tras la recien estrenada jurisprudencia, para obtener algun bono sobre recibo, tenias que corroborar su registro. Para resumirla, quedo totalmente prohibida una proposicion sobre bonos a las mas seres, aquellos que daban por tu primer tanque unicamente registrarte. Ya que ya, sobre 2020 le toco nuestro momento sobre proceso a las situaciones de las promociones y no ha transpirado los bonos sobre recibimiento.<\/p>\n

Con el fin de que os pudiera llegar a ser mas facil acordar, te ofrezco una referencia que necesitas saber, igual que na? sobre juegos acerca de avispado y las bonos sobre recepcion cual puedes reclamar. Pocos casinos se fabrican con cualquier bono sobre audiencia sin deposito, por eso dese prisa con el fin de beneficiarse la propuesta de mas lucrativa sobre Casino 777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Conocerlas seri\ufffda su conveniente maniobra de seleccionar unicamente publicaciones aconsejables Registrate acerca de mediante un estatuto ABR26 asi\ufffd como recibe inclusive cincuenta\ufffd sobre bonos sobre casino falto necesidad de tanque. Nuestro bono suele tardar hasta 24 muchas horas habiles referente a reflejarse asi\ufffd como seri\ufffda vigente solo de juegos sobre\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-70672","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70672","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=70672"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70672\/revisions"}],"predecessor-version":[{"id":70673,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70672\/revisions\/70673"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70672"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}