/* 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":70698,"date":"2026-05-22T21:28:49","date_gmt":"2026-05-22T21:28:49","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70698"},"modified":"2026-05-22T21:28:50","modified_gmt":"2026-05-22T21:28:50","slug":"yobingo-brinda-algun-bono-carente-deposito-de-5%ef%bf%bd-mero-de-nuevos-seres","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/yobingo-brinda-algun-bono-carente-deposito-de-5%ef%bf%bd-mero-de-nuevos-seres\/","title":{"rendered":"YoBingo brinda algun bono carente deposito de 5\ufffd mero de nuevos seres"},"content":{"rendered":"

Conocerlas seri\ufffda tu preferiblemente maniobra con el fin de elegir unicamente ofertas convenientes<\/h2>\n

Registrate sobre con el estatuto ABR26 y no ha transpirado recibe inclusive 50\ufffd acerca de bonos de casino desprovisto necesidad de tanque. El bono suele tardar incluso 24 muchas horas habiles sobre reflejarse y seri\ufffda actual unicamente para juegos de casino, slots desplazandolo hacia el pelo videobingos permitidos. Ebingo brinda cualquier bono sin tanque sobre 5\ufffd con el fin de nuevos gente que completen nuestro sometimiento asi\ufffd como verifiquen su cuenta lanzando nuestro DNI. Nuestro Casino Online sobre Gran Madrid brinda algun Bono Desprovisto Tanque sobre 20\ufffd vacante lo tanto para juegos de casino para slots.<\/p>\n

El procedimiento sobre 777 Casino login es agradable desplazandolo hacia el pelo facil de usar, lo cual realiza cual las cuantiosas posibilidades sobre juego de el casino somos asequibles. Con la patologi\ufffda del tunel carpiano relaciones hacia la seguridad y el esparcimiento limpio, Casino 777 cuenta con licencias de organizaciones reguladores de renombre, lo que garantiza cualquier escenario de juego fiable desplazandolo hacia el pelo especializada. La plataforma permanece disenada de ofertar la pericia simple de usar, proveyendo tanto a los jugadores nuevos igual que a los con experiencia la interfaz sobre navegacion fluida. 777 Casino es una tarima sobre entretenimiento online que han cautivado en jugadores sobre todo el mundo con el pasar del tiempo su tematica retro, que debes valorar a los clasicos casinos de las Vegas.<\/p>\n

Algunos de los ejem mas profusamente reconocidos en seguida dia seri\ufffda el 777 casino bono desprovisto deposito Mexico, la propaganda cual ha denominado la interes para la patologi\ufffda del tunel carpiano facilidad sobre activacion y para las juegos compatibles que brinda en el momento en que el registro. Entre los factores para bonos carente deposito de casino es que poseen un rollover superior a demas bonos sobre casino. El dinero de el bono de casino falto deposito es una cantidad alguna de dinero cual se puede utilizar referente a casi todo entretenimiento cual muestre nuestro casino. Un bono sobre casino desprovisto tanque no precisa que hagas un tanque para reclamarlo.<\/p>\n

Estas anuncios suelen ser temporales y no ha transpirado resultan una excepcional vez con el fin de conseguir de mayor camarilla a tus juegos favoritos, bien en compania de premios anadida, pruebas o bien apuestas gratuitas. Alla de las anuncios genericos, hay gran cantidad de casinos en internet con manga larga bonos de juegos especificos. Los excelentes bonos de casino online dan nuestro reembolso como dinero eficaz falto rollover, aunque esto depende para terminos y formas sobre todo operador. En caso de que seri\ufffda igual que capacidad que disfrutas de percibir las estafermo quieres casinos joviales depositos minimos por 1\ufffd con el fin de conseguir saber todo nuestro abanico de nuevas posibilidades. Uno mas de los bonos sobre recibo de mas esgrimidas seri\ufffda la persona que ofrece giros gratis.<\/p>\n

Una medio implementa ciencia sobre encriptacion SSL de ultima engendramiento, de igual de las que hacen uso los instituciones bancarias, de Tikitaka casino online<\/a> proteger los esposos informaciones personales desplazandolo hacia el pelo financieros sobre las seres mientras accesos no autorizados. Una empuje es un obelisco relevante sobre 777 Casino, cual opera pobre estrictas regulaciones desplazandolo hacia el pelo licencias internacionales cual dan garanti\ufffda de la defensa para los jugadores y la integridad de ellas los operaciones. La seleccion sobre un casino online aental con el fin de garantizar la habilidad satisfactoria, y 777 Casino en internet se podri\ufffdan mover distingue para multiples razones cual lo convierten en una posibilidad proliferante para jugadores referente a Argentina.<\/p>\n

Si el casino cumple varios de estos criterios, es posible asegurarse de que disfrutaras de una vivencia segura en compania de un bono carente tanque que ciertamente valga una tristeza. Cualquier enorme casino tiene que dar una gran eleccion sobre juegos , nadie pondri\ufffda en duda desde tragaperras inclusive novedosas “slots” , juegos de banco y no ha transpirado casino referente a presto. Sin embargo, seri\ufffda relevante concebir las campos y no ha transpirado designar cualquier casino de fiar con el fin de beneficiarse al extremo este tipo de promocion. Las bonos carente deposito suelen quedar entes a terminos especificos, igual que algun rollover que establece cuantas ocasiones deberias colocar nuestro bono en alcanzar jubilar las ganancias. Se puede revisar nuestra listado sobre casinos para decirte de que experimentas en una medio segura asi\ufffd como regulada.<\/p>\n

777 casino resulta una tarima de juegos de casualidad online cual ofrece una gran variedad de juegos de sus individuos. Los promociones y no ha transpirado bonificaciones resultan generosas asi\ufffd como las graficos para los juegos son extremadamente excelentes. Gigantesco asistencia y no ha transpirado variedad de juegos sobre 777 casino, no obstante deseo cual anadieran mas profusamente opciones con seccion de juegos referente a listo. Explora alguna 1000 juegos, mesas de casino acerca de avispado y no ha transpirado apuestas zapatillas de deporte en el momento, todo optimizado para un juego liquido sobre Android, iOS o cualquier buscador. Sumergete en la vibrante sociedad de 777 casino y no ha transpirado soluciona juegos de asiento, ruletas relampago desplazandolo hacia el pelo shows de juegos sobre estilo empezando desde tu celular, Pc o en la barra pad, todo con el pasar del tiempo privacidad pleno, decision, desplazandolo hacia el pelo algun juego exacto licenciado.<\/p>\n

Las mas importantes son el tanque diminuto, los requisitos de puesta desplazandolo hacia el pelo el decada con el fin de cumplirlos<\/h2>\n

Por lo tanto, las bonos sobre audiencia queda an acontecer legales en De cualquier parte del mundo empezando por nuestro 12 sobre mayo de 2024. Buscando esta novedosa ley, con el fin de conseguir cualquier bono de bienvenida, tenias cual probar su asignacion. De resumirla, quedo totalmente prohibida la oferta sobre bonos a los mas seres, aquellos que daban por tu primer tanque unico registrarte. Ya que bien, sobre 2020 le toco nuestro momento de proceso a las esencia de las promociones desplazandolo hacia el pelo las bonos sobre recepcion.<\/p>\n

Para que os pueda ser sencillo disponer, os ofrezco la referencia cual precisas saber, igual que numero de juegos referente a vivo asi\ufffd como los bonos de recibimiento cual es posible solicitar. Los casinos tienen algun bono sobre audiencia desprovisto tanque, por eso date prisa de aprovechar la propuesta de mayor lucrativa de Casino 777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Conocerlas seri\ufffda tu preferiblemente maniobra con el fin de elegir unicamente ofertas convenientes Registrate sobre con el estatuto ABR26 y no ha transpirado recibe inclusive 50\ufffd acerca de bonos de casino desprovisto necesidad de tanque. El bono suele tardar incluso 24 muchas horas habiles sobre reflejarse y seri\ufffda actual unicamente\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-70698","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70698","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=70698"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70698\/revisions"}],"predecessor-version":[{"id":70699,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70698\/revisions\/70699"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70698"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}