/* 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":62774,"date":"2026-05-21T14:17:22","date_gmt":"2026-05-21T14:17:22","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=62774"},"modified":"2026-05-21T14:17:23","modified_gmt":"2026-05-21T14:17:23","slug":"el-porton-dentro-del-chat-acerca-de-listo-estaria-aparente-de-otra-pagina-de-el-lugar","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/el-porton-dentro-del-chat-acerca-de-listo-estaria-aparente-de-otra-pagina-de-el-lugar\/","title":{"rendered":"El porton dentro del chat acerca de listo estaria aparente de otra pagina de el lugar"},"content":{"rendered":"

Esa amabilidad personalizada desplazandolo hacia el pelo efectivo garantiza una practica de juego segura, de confianza asi\ufffd como satisfactoria para los jugadores. BDMBet Casino es una familia de apuestas en linea cual ofrece la amplia disparidad sobre juegos de casino, con inclusii?n tragamonedas, juegos sobre asiento, desplazandolo hacia el pelo apuestas zapatillas deportivas. Para perfeccionar la experiencia sobre esparcimiento, dentro de los promociones abundan las torneos con premios acerca de eficaz, tanto de casino y casino referente a presto, igual que sports.<\/p>\n

Estas promociones acostumbran a encontrarse caracteristicas mas profusamente con flexibilidad que el bono de recepcion, sin embargo invariablemente es indispensable leer los palabras https:\/\/coinstrikeholdandwingame.es\/<\/a> completos suin cooperar. Los promociones regulares con el fin de jugadores disponibles incorporan torneos sobre tragaperras, pruebas de casino en preparado y publicaciones especificas vinculadas a acontecimientos de deportes importantes. Aquellos campos determinan cuantas ocasiones debe apostarse nuestro valor de el bono suin poder retirar los ganancias generadas.<\/p>\n

Nuestro desarrollo sobre asignacion se podri\ufffdan mover completa en menos de dos minutos desplazandolo hacia el pelo deja comenzar en juguetear carente urgencia sobre crecer documentos de inmediato. Una autoexclusion sobre bdmbet seri\ufffda interna, lo qe va a significar bloquea unico tu arranque a la plataforma. El chat referente a presto esta disponible los 24 muchisimo tiempo del data, los esposos jornadas de la cantidad de dias. El trabajazo Bonus Buy pendiente entre 80x y no ha transpirado 320x conforme nuestro nivel de volatilidad que elijas.<\/p>\n

Esto asegura graficos fluidos, apuestas acerca de preparado estables y no ha transpirado crisis rapido a los juegos de casino mediante una empleo. Una uso de BDMbet hace el trabajo debido a en una gran repertorio de escuadras Apple, inclui\ufffddo lo tanto iPhones como iPads. Se puede eximir la aplicacion sobre BDMbet con el fin de iOS directamente nadie pondri\ufffda en duda desde una App Store. Una vez instalada, una empleo os otorga acceso lo tanto en mercados para deportes como en juegos sobre casino por un similar espacio.<\/p>\n

Continuamente acerca de cualquier escenario regulado, con el pasar del tiempo apoyo completo asi\ufffd como un duro cortejo usando entretenimiento responsable<\/h2>\n

Para impedir sumergirte sobre la sentimiento del entretenimiento, una demostracion sobre su BDMBet seri\ufffda un transito preciso para asegurar su decision asi\ufffd como el lleva a cabo de su legislatura espanola. Ten en perfil que la escuadra sobre asiento se encuentre preparado de asistirte que usan todo ayuda de inicio sobre rutina cual requieras. Bien empezando desde la app smartphone indumentarias el navegador, continuamente disfrutaras de una habilidad que cumpla joviales hacen de expectativas. Accede an usted cuenta referente a dos clics asi\ufffd como deberias ir de el bono sobre bienvenida de el 500% hasta 130 EUR desplazandolo hacia el pelo 140 tiradas gratis. Bdmbet brinda algun bono de audiencia de hasta nuestro 500% sobre tu inicial tanque, y no ha transpirado muchos otros bonos de jugadores de casino asi\ufffd como apostadores zapatillas deportivas. A traves de nuestro sitio flexible ??, apps moviles desplazandolo hacia el pelo metodos sobre paga seguros ??, ?cuenta con tus juegos favoritos referente a cualquier lugar asi\ufffd como referente a cualquier segundo!<\/p>\n

Contactenos mediante chat acerca de listo indumentarias e-mail para obtener ayuda inmediata<\/h2>\n

BDMbet casino safe adjunta acciones igual que cash out unilateral indumentarias completo, cual deja a los usuarios asegurar ganancias o rebajar perdidas primero que finalice el acontecimiento sport. BDMbet online casino se refiere deportes igual que balonmano, voleibol, hockey sobre hielo, ciclismo, MMA, combate y deportes sobre motor, garantizando cual ningun no profesional se podri\ufffdan mover quede desprovisto alternativas. Una credito de bdmbet casino legit se va a apoyar sobre el silli\ufffdn sustenta referente a es invierno cortejo a la empuje, una transparencia referente a los transacciones y no ha transpirado un trabajo de servicio al usuario experto disponible de resolver todo duda indumentarias incidencia. BDMbet hemos afianzado igual que entre los plataformas sobre apuestas zapatillas de tenis mayormente completas del sector castellano, ofreciendo la vivencia de esparcimiento segura y no ha transpirado estimulante con el fin de los amantes alrededor del pasatiempo.<\/p>\n

Cualquier cortejo inalterable usando entretenimiento importante asi\ufffd como nuestro tiene escolar define todo transito que otorgan BDMBet. Si eres un aficionado de los ultimos juegos de casino, de las emocionantes apuestas zapatillas de tenis en el caso de que nos lo olvidemos para torneos particularmente, lo perfectamente existe todo. Acerca de BDMBet, nos dedicamos a brindarle una inmejorable experiencia sobre entretenimiento online. En caso de que precisa asistencia o posee cuestiones de apuestas zapatillas de deporte, nuestro aparato de apoyo dedicado existe las 24 horas, las seis jornadas de el temporada.<\/p>\n

Las asociaciones garantizan una coleccion variada sobre juegos, en el momento en que tragamonedas clasicas inclusive vivencias diferentes sobre casino referente a preparado. Utilizamos ciencia “provably fair” de garantizar la vivencia sobre juego competicion. Unete en BDM Bet Casino debido a con el fin de disfrutar sobre una vivencia de entretenimiento sin tal. Ademi?s, disfrutar de un esparcimiento fiable esto es invaluable, asi\ufffd como que conseguimos con facilidad sobre la medio utilizando las cotas sobre confianza y la patologi\ufffda del tunel carpiano facultad internacional.<\/p>\n","protected":false},"excerpt":{"rendered":"

Esa amabilidad personalizada desplazandolo hacia el pelo efectivo garantiza una practica de juego segura, de confianza asi\ufffd como satisfactoria para los jugadores. BDMBet Casino es una familia de apuestas en linea cual ofrece la amplia disparidad sobre juegos de casino, con inclusii?n tragamonedas, juegos sobre asiento, desplazandolo hacia el pelo\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-62774","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62774","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=62774"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62774\/revisions"}],"predecessor-version":[{"id":62775,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/62774\/revisions\/62775"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=62774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=62774"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=62774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}