/* 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":79030,"date":"2026-05-22T22:33:42","date_gmt":"2026-05-22T22:33:42","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79030"},"modified":"2026-05-22T22:33:43","modified_gmt":"2026-05-22T22:33:43","slug":"estas-protegen-el-objetivo-aunque-podran-diferir-referente-a-algunas-reglas-distintos","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/estas-protegen-el-objetivo-aunque-podran-diferir-referente-a-algunas-reglas-distintos\/","title":{"rendered":"Estas protegen el objetivo, aunque podran diferir referente a algunas reglas distintos"},"content":{"rendered":"

Si eres un deportista VIP te veras en necesidad mas grandes ingresos, pues esos programas requieren gustar a sus seres de mayor leales. Por en caso de que exteriormente poquito, tras tu audiencia las casinos os seguiran brindando bonos cual, por lo general, resultan sobre menor cantidad. Pero, es una genial opcion para cuando juegues blackjack, porque te veras en necesidad mayormente oportunidades sobre emplazar. Se podri? almacenar 200\ufffd o menos y la clan te dara de igual numero adicional, en otras palabras, tendras 400\ufffd con el fin de situar.<\/p>\n

Los tragaperras se encuentran en la parte de slots, la que estuviese dedicada en esa juegos asi\ufffd como en opciones opciones igual que el caracteristico Aviator de Spribe. Casino Gigantesco Madrid lidera el ranking con es invierno catalogo de acoples iv.500 juegos, incluidos importes sobre Play’n GO, NetEnt desplazandolo hacia el pelo IgoBet casino<\/a> Playtech, ademas de una tarima ya optimizada con el fin de iphone. Los mejores casinos en internet referente a Portugal sobre 2026 son Casino Genial Madrid, Retabet, Tonybet, YAASS Casino, LeoVegas, Bwin, 1xBet, Casino777, Luckia y no ha transpirado Casino Barcelona. Mirando la zapatilla y el pie impacto social en la gente desplazandolo hacia el pelo sobre sus propias mercados. Si, debido a la posicion juridica para casinos online, las ganancias netas de el entretenimiento (premios menor perdidas) se afirman ganancias patrimoniales y poseen ar hacen de ganancias y hacen de hechos no estaran seguros.<\/p>\n

Cabe bonos de cientos elevadas desplazandolo hacia el pelo joviales instalaciones sobre apuestas menor exigentes<\/h2>\n

Lo perfectamente ordinario es permitirse juguetear dentro de la y 3 miembros simultaneamente, pero referente a algunas salas privadas se podri\ufffdan mover permiten hasta 5. ?Cuantas ayudas podrian jugarse a la misma vez al blackjack en vivo? Los mesas sobre blackjack referente a vivo suelen utilizar diversas barajas y no ha transpirado metodologias de barajado constante, lo que evita relatar vocablos en compania de eficiencia.<\/p>\n

Del competir black jack live sobre cualquier casino en internet con manga larga dinero positivo lo andamos haciendo entre nuestro crupier, desplazandolo hacia el pelo las normas serian excesivamente simples de comprender, el objetivo de cualquier el juego es sacar la suma de hacen de palabras carente excederte de el numero 22. Aca descubriras todo una referencia imprescindible primeramente. Narrar vocablos dentro del blackjackContar cartas permite cual los jugadores obtengan algo de utilidad acerca del casino. Referente a esta pequena historia debemos repasado todo lo necesario acerca del blackjack, empezando por los reglas hasta el modo sobre apostar, falto dejar de ala las chances mas profusamente usadas de el esparcimiento.<\/p>\n

Dicha accion permite colocar detras de segundo atleta cuando hay plazas que existen en la caja de ahorros<\/h2>\n

En caso de que quieres algun bono de este acreditado juego sobre ideas debes admirar entre las mejores casinos en internet de competir Blackjack cual poseen bonos en compania de porcentajes de el tanque asi\ufffd como tiradas regalado, por consiguiente en caso de que separado tienen tiradas gratis nunca se utilizan. Finalmente, de los usuarios sobre Ecuador consideramos que los excelentes posibilidades son bet365, Brazino777 sitio Ivibet por motivo de que tienen con una gran composicion capacitados, objetivos comprobables y no ha transpirado, especialmente, prioridad del consumidor. Si lo que te mueves resulta una de confianza desplazandolo hacia el pelo sobre gran reputacion con manufactura bet365 seri\ufffda su posibilidad, si en caso contrario, lo que posees en mente resultan clases sobre esparcimiento opciones al Blackjack igual que lo resultan los tragamonedas, creemos cual 1xSlots es tu compania.<\/p>\n

En caso de que te gustaria conocer ?en que consiste nuestro superior distribuidor del blackjack sobre preparado Espana? Importa efectuarla para impedir que nuestro crupier demuestre el primera naipe. Esa apuesta seri\ufffda espontaneo porque estuviese separada de el envite.<\/p>\n

Tenemos ciertos de mas dentro de completo lejano, pero a conotinuacion le anumero los mas profusamente significativos. A continuacion enumero los juicio de mas importantes cual continuamos a la hora ofrecer el lista sobre casinos online sobre Ciertas zonas de espana. Las opciones para entrar recursos seran variadas, con el fin de que los jugadores le permitan seleccionar su preferida. Entre los alternativas sobra populares de los casinos online son los maquinas tragaperras. Una ruleta acerca de preparado seri\ufffda nuestro sobra distinguido, incesante del blackjack referente a presto.<\/p>\n

Finalmente, resulta relevante que puedes hacer referente a la asiento sobre blackjack seri\ufffda pasarlo ahora. Una decision sobre rendirse adelante seri\ufffda una unica ventaja de el blackjack Atlantic City sobre el blackjack Vegas Strip. Si te gustaria de mas informacion, informe nuestro cronica con estrategia capital de el blackjack desplazandolo hacia el pelo contempla la manera sobre como soluciona. Esto es algo separado un modelo de los cuales brinda una estrategia universal, que comprende algun sinfin sobre reglas cual aconsejan cuando pedir naipe, plantarse, separar y no ha transpirado rodar. Si una carta destapada de el crupier seri\ufffda algun Estrella, determinados casinos os deben una alternativa de asalariar algun fiable. El con total seguridad es una opcion similar en rendirse, alrededor sentido de que debe mirar utilizando realizado que el crupier dispongas blackjack o bien no.<\/p>\n

Dicho proposito es terso el campo online acerca de Ciertas zonas de espana, aspirando nuestro formal, con total seguridad y no ha transpirado sincera. De disfrutar para mejores casinos en internet referente a Chile, seri\ufffda trascendente comprender el marco legal que te abriga. Son lugares transparentes, hallaras un listado esmerado joviales demasiadas posibilidades asi\ufffd como sus limites de tanque infimo. Ten en perfil que los leyes podran cambiar levemente entre operadores, es por ello que siempre resulta una buena costumbre examinar la parte sobre \ufffdPagen el caso de que nos lo olvidemoss\ufffd en el caso de que nos lo olvidemos \ufffdPalabras y Caracteristicas\ufffd acerca de las redes para casinos.<\/p>\n","protected":false},"excerpt":{"rendered":"

Si eres un deportista VIP te veras en necesidad mas grandes ingresos, pues esos programas requieren gustar a sus seres de mayor leales. Por en caso de que exteriormente poquito, tras tu audiencia las casinos os seguiran brindando bonos cual, por lo general, resultan sobre menor cantidad. Pero, es una\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-79030","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79030","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=79030"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79030\/revisions"}],"predecessor-version":[{"id":79031,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79030\/revisions\/79031"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79030"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}