/* 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":74950,"date":"2026-05-22T22:21:27","date_gmt":"2026-05-22T22:21:27","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=74950"},"modified":"2026-05-22T22:21:28","modified_gmt":"2026-05-22T22:21:28","slug":"lo-cual-nos-permite-decir-que-la-patologi%ef%bf%bda-del-tunel-carpiano-proposicion-sobre-juegos-de-slots-es-extremadamente-destacable","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/lo-cual-nos-permite-decir-que-la-patologi%ef%bf%bda-del-tunel-carpiano-proposicion-sobre-juegos-de-slots-es-extremadamente-destacable\/","title":{"rendered":"Lo cual nos permite decir que la patologi\ufffda del tunel carpiano proposicion sobre juegos de slots es extremadamente destacable"},"content":{"rendered":"

Se podri? ver y competir alrededor del casino sobre avispado referente a 777 cual posee jugadores humanos reales a traves de una transmision de cinta. De instantaneos avances tecnologicos, los apostantes en linea podran ahora participar a sus juegos de casino favoritos acerca de directo. Aunque, en 777 Casino, esto se eleva a un fresco nivel en el elaborar tratamiento del asistencia de casino en presto cual se podri\ufffdan mover otorga. Suele cual llegan a convertirse en focos de luces te venga a la pensamiento el blackjack eliminar segundo entretenimiento de palabras una vez que pienses sobre juegos de casino.<\/p>\n

Ademi?s hemos declarar cual las modos pueden repetirse en la circunstancia bonificaciones cual aun estan dinamicas sobre las casinos online cual existen alrededor listado ?Veamos! En cierta ocasion nuestro jugador cumplia joviales lo perfectamente ayer con el fin de cooperar acerca de una oferta, recibia cualquier numero decidido de \ufffdtiradas’ de balde que podia usar de determinados juegos, como los slots sobre jackpot progresivo. Bien, tambien debemos de decir cual, generalmente, los requisitos para apartar las ganancias solian acontecer bastante altos, entonces el cliente debia registrarse, incluso realizar cualquier tanque infimo y no ha transpirado comenzar en apostar con el dinero de conseguir sacar el rendimiento generado utilizando bono carente deposito.<\/p>\n

Hemos mencionar que la mayoria para los casinos a su disposicion acerca de Portugal normalmente dar un bajo numero de posibilidades sobre juegos de bandada. Entre ellas mismas, puedes dar con tragaperras clasicas, tragaperras sobre disco, tragaperras megaways y no ha transpirado tragaperras cluster, tambien demas tipos de slots cual suelen ser menor utilizadas. Contribuye acerca de esta promocion de asi conseguir uno de los 3 premios especiales. Nuestro Casino777 hace cinco\ufffd gratuito a quienes activan este tipo de publicidad desplazandolo hacia el pelo despues apuestan cincuenta\ufffd que usan su liquidacion cierto. Debido a las requisitos, monto sobre cobertura y tiempo sobre vigencia, levante bono estuviese bastante alli de ser con una propuesta.<\/p>\n

Hoy los bonos de bienvenida no estan a tu disposicion acerca de casinos espanoles, aunque, existe otras posibilidades<\/h2>\n

Ahora que has reclamado su bono sin https:\/\/ebingo-casino.org\/es-es\/<\/a> tanque, veras los recursos del bono sobre tu cuenta. Acerca de este punto, igualmente vas a tener el segundo de obtener tu codigo de permitirse exigir tu bono desprovisto tanque gratuito. Con pagina de registro de el casino, tendras que brindar referencia capital tuya, igual que su apelativo, cantidad sobre telefono, correo electronico y no ha transpirado gestion deportiva.<\/p>\n

Asimismo es util revisar las montos a su disposicion con el fin de escoger su mejor decision. Impide hacerlo, por motivo de que siendo asi\ufffd pierdes la ocasion de percibir su bono desprovisto tanque. Los casinos hablan en sus palabras y no ha transpirado esencia,un valor extremo sobre puesta permitida del almohadillado con coolmax cobranza de los bonos gratis carente deposito. Por eso, tu opcion con el fin de sacarle el preferible afan en este tipo de norma, seri\ufffda accesar en diferentes casinos y no ha transpirado conseguir el bono sobre todo uno.<\/p>\n

Entre sus de edad avanzada importantes esta algun bono sobre bienvenida de el doscientos % incluso un<\/h2>\n

En seguida seri\ufffda capitalista publico del AC Milan asi\ufffd como colabora de la estrella del futbol Alisha Lehmann, lo que refuerza es invierno imagen como medio de fiar asi\ufffd como que usan ambiciones globales. Esta publicidad no separado progreso los probabilidades empezando desde nuestro comienzo, suerte que ademas mira el aspectos ambicioso del operador. 000 \ufffd, acompanado de doscientas giros regalado, perfecta para quienes desean comenzar con una gran buena utilidad. RoboCat seri\ufffda un casino sin atribucion acerca de Portugal cual ha logrado permanecer dentro de las opciones mas profusamente atractivos para los jugadores que buscan libertad y variacii?n externamente de el mercado regulado.<\/p>\n

Todos estos bonos desprovisto deposito son las mas simples y te permiten juguetear en lo cual desees. Primero, varios casinos ofrecen una comodo oferta monetarios sobre bono para invertir del casino. Sin embargo, las bonos sin tanque han sido unas las superiores maneras de iniciar acerca de los casinos online. Imagino, aquellos mismos sitios se ha protegido dentro del incluir requisitos sobre envite rigurosos asi\ufffd como terminos desplazandolo hacia el pelo esencia cual usualmente limitan el inmenso se podri? ganar con el pasar del tiempo las promociones. Los casinos en internet deberian recurrido a dichos bonos sin tanque gracias a cual han corroborado acontecer fiables en la espectaculo sobre nuevos jugadores cual todavia no disponen experiencia alrededor entretenimiento online.<\/p>\n

Alrededor ambiente de los casinos en internet, tenemos tipos de bonos con el fin de seducir lo tanto en cero millas jugadores igual que a las veteranos de el plataforma. Tambien, os favorecen a reconocer si el casino tiene lo que te mueves, lo tanto sobre disparidad sobre juegos igual que referente a confianza. Resulta una modo fiable sobre penetrar durante habilidad de el casino online Chile bono falto deposito desplazandolo hacia el pelo, en continuacion, puede ser ganar una dinero eficaz alrededor transcurso. En un bajo numero de terminos, cualquier bono desprovisto deposito resulta una recompensa que las casinos en internet entregan en cero millas usuarios carente que esos tengan cual realizar cualquier superior inaugural. Este website posee noticia asociada joviales juegos de suerte y no ha transpirado no adquiere los menores de edad avanzada. Si sigues navegando, entendemos que aceptas las condiciones de la tratamiento.Mayormente noticia<\/p>\n

Por lo tanto, esta tarima nunca era an acontecer una salvedad, aunque, si que ofrece diferentes alternativas que consideramos extremadamente entretenidas. El mejor ofertado es la ruleta sobre casino, con el pasar del tiempo algunas miles de alternativas, nuestro siguiente es nuestro blackjack o bien 20, y para finalizar debemos alrededor poquer. Al igual que en todas las plataformas de casinos online del nacion, las tragaperras resultan nuestro esparcimiento mas ofertado dentro de Casino777.<\/p>\n","protected":false},"excerpt":{"rendered":"

Se podri? ver y competir alrededor del casino sobre avispado referente a 777 cual posee jugadores humanos reales a traves de una transmision de cinta. De instantaneos avances tecnologicos, los apostantes en linea podran ahora participar a sus juegos de casino favoritos acerca de directo. Aunque, en 777 Casino, esto\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-74950","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74950","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=74950"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74950\/revisions"}],"predecessor-version":[{"id":74951,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/74950\/revisions\/74951"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=74950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=74950"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=74950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}