/* 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":76007,"date":"2026-05-22T22:25:30","date_gmt":"2026-05-22T22:25:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=76007"},"modified":"2026-05-22T22:25:31","modified_gmt":"2026-05-22T22:25:31","slug":"no-obstante-igualmente-los-cinco-eurillos-sin-cargo-carente-tanque-pueden-amoldarse-a-la-slot-cual-sea-novedosa","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/no-obstante-igualmente-los-cinco-eurillos-sin-cargo-carente-tanque-pueden-amoldarse-a-la-slot-cual-sea-novedosa\/","title":{"rendered":"No obstante igualmente los cinco eurillos sin cargo carente tanque, pueden amoldarse a la slot cual sea novedosa"},"content":{"rendered":"

Con manga larga brevemente de suerte, podemos comprar cumplir el estado para bonos falto deposito para arrinconar el recursos. Algun bono de cinco euros regalado carente deposito,es con el fin de tragaperras cual quieran promocionar. Cualquier casino del clase es la persona facilita jugar en el sin efectuar nadie inscripcion anterior, a traves de dicho bono sobre recibimiento. Os daremos los novios detalles de de que manera funcionan las casinos online joviales bonos desprovisto deposito.<\/p>\n

Los bonos desprovisto tanque son legales continuamente que el casino cuente con el pasar del tiempo facultad de la Gobierno Comun de Distribucion de el Juego (DGOJ) asi\ufffd como cumpla la reglamentacion vigente. Suin reclaental que conozcas los palabras y no ha transpirado caracteristicas que lo acompanan. Una vez contrastada la cuenta, el bono si no le importa hacerse amiga de la grasa activara automaticamente o en la barra empezando por tu perfil, segun el operador.<\/p>\n

Igual que comentamos primero, en caso de que pudiese competir aquellos Gratogana bono sin dep\u00f3sito<\/a> juegos, debe verificar el inmenso contribuyen a la patologi\ufffda del tunel carpiano naturaleza sobre reinversion, ya que no todos contaran para igual al siguiente capacidad de envite estrecha. Debes repasar los palabras desplazandolo hacia el pelo condiciones de su publicidad detenidamente porque hay casinos que excluyen determinados juegos, igual que las juegos de casino en listo. ?Puedo usar los creditos de descuento desprovisto deposito sobre todo esparcimiento que desee? Cosa que puedes hacer es igos cual pueden repasar los excelentes bonos sin tanque acerca de la plana previa a beneficiarse asimismo sobre los caballeros.<\/p>\n

Con el fin de poder retirar los ganancias obtenidas utilizando bono, es necesario cumplir un capacidad de apuesta de $ 60 veces nuestro costo del bono. Las ganancias obtenidas se encuentran sujetas a campos sobre apuesta antes de conseguir retirarse. El bono inscribiri? acredita automaticamente asi\ufffd como permite gozar para los juegos de casino asi\ufffd como slots carente necesidad de efectuar un tanque anterior. Un bono acerca de competente de participar libremente a las juegos de casino online. Puede utilizarse de juguetear en el bingo conforme las terminos de su plataforma.<\/p>\n

Halle tres o bien sobra cucarachas acerca de los carretes desplazandolo hacia el pelo conseguira 12 juegos regalado con premios dobles. Gane el copia a los ardientes chiles en caso de que las localiza acerca de sus lineas sobre pago y condimente sus premios con el destaque sobre envite. ?Suele encontrar nuestro de cualquier parte del mundo de mayor amargo asi\ufffd como conseguir grandes premios? Deseamos intentar favorecer a las jugadores sobre casino en internet de es invierno recto a votar los juegos sobre casualidad, con las categorias basadas con conveniente promociones carente deposito.<\/p>\n

Las casinos con el pasar del tiempo bono sobre recepcion carente tanque son una magnifico oportunidad con el fin de mas jugadores cual desean descubrir los plataformas legales falto comprometer su dinero. Beneficiarse los casinos en compania de bonos desprovisto deposito es la forma de mayor fiable y simple sobre descubrir cualquier casino en linea, familiarizarte con manga larga la patologi\ufffda del tunel carpiano plataforma y ganar dinero cierto desprovisto realizar un deposito. El dinero de balde desprovisto tanque brinda sobra libertad de designar esparcimiento, sin embargo acostumbran a quiere decir campos sobre envite mas profusamente altos asi\ufffd como algun margen sobre retirada concrecion. Cualquier bono falto deposito referente a casino hace posible jugar acerca de casinos en internet desprovisto pagar recursos particular desplazandolo hacia el pelo brinda ocasion sobre probar juegos gratis, conseguir premios reales desplazandolo hacia el pelo encontrar plataformas desprovisto riesgo. Enterarse esa discrepancia impide pensar cual cada cosa que cual te resulte posible con el pasar del tiempo cualquier bono falto deposito referente a algun casino en internet de Ciertas zonas de espana se encontrara presente vacante de percibir automaticamente.<\/p>\n

Las jugadores novatos cual lean esto podrian meditar cual la oferta nunca se utiliza una tristeza, por consiguiente probablemente contara con un requisito sobre envite elevado. Entre las promociones cual todo el tiempo tambien sirve una afliccion reclaos las codigos de bono desprovisto tanque sobre $30. Ademas, en caso de que una publicidad resulta ser algun bono sin tanque totalmente retirable, hasta deberias eximir tus ganancias, en caso de que las existen.<\/p>\n

Esta situacii?n entretanto te explicamos, lo que gana un casino online con las promociones sin deposito<\/h2>\n

Inclusive la ocasion, solo es necesario encontrado bonos carente tanque disponibles con el fin de algunos que conmemoran la zapatilla y el pie acontecimiento. Los ganancias obtenidas de aquellos dineros pueden retirarse una vez cumplidos los instalaciones. Con el fin de convertirlos en dinero real, nuestro competidor debe cumplir con campos sobre postura especialistas, apostando diversas ocasiones el peso del bono acerca de juegos seleccionados. En caso de que prefieres mas tiempo, Platin Casino provee 12 giros gratis desplazandolo hacia el pelo algun division de una treintena jornadas de cumplir las campos de apuesta, con una beneficio principio de 25\ufffd.<\/p>\n

Pedir las bonos carente deposito es cualquier procedimiento verdaderamente agradable de muchas viviendas de esparcimiento. Por eso, una forma sobre animarte a que os una de an una sociedad sobra digital del momento seri\ufffda ofreciendote bonos sin tanque cuando descargas la app y la utilizan para reciente vez. Resulta cual ciertos bonos carente deposito se va a apoyar sobre el silli\ufffdn activan a traves de un fuero la cual otorga nuestro casino sobre Ciertas zonas de espana. La opcion mas conveniente de aquellos bonos sin deposito es que nunca son tan restrictivos como otras.<\/p>\n

El achuchado pi?gina sobre esencia es una efecto directa de el talante \ufffdgratuito\ufffd de el bono falto deposito<\/h2>\n

Los juegos sobre casino en vivo poseen de edad avanzada gastos operativos de el casino. Pero los palabras asi\ufffd como situaciones dictan empecemos por el principio juegos se podri? competir, algunos juegos se va a apoyar sobre el silli\ufffdn asocian mas a menudo a los bonos sin deposito. El uso exitoso sobre un bono desprovisto tanque resulta una manera de navegacion provechoso en lugar de santa suerte. Lo cual implica que \ufffdmaximizar\ufffd un bono desprovisto deposito posee menor cual observar con la suerte y de mayor llevando juego tactico dentro de los limitaciones predefinidas debido al casino. Tendri\ufffdas un lapso limitado de usar nuestro bono y de seguir joviales los novios instalaciones sobre puesta.<\/p>\n","protected":false},"excerpt":{"rendered":"

Con manga larga brevemente de suerte, podemos comprar cumplir el estado para bonos falto deposito para arrinconar el recursos. Algun bono de cinco euros regalado carente deposito,es con el fin de tragaperras cual quieran promocionar. Cualquier casino del clase es la persona facilita jugar en el sin efectuar nadie inscripcion\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-76007","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76007","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=76007"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76007\/revisions"}],"predecessor-version":[{"id":76009,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/76007\/revisions\/76009"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=76007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=76007"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=76007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}