/* 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":14450,"date":"2026-05-08T16:23:03","date_gmt":"2026-05-08T16:23:03","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=14450"},"modified":"2026-05-08T16:23:04","modified_gmt":"2026-05-08T16:23:04","slug":"pero-igualmente-los-cinco-euros-sin-cargo-desprovisto-deposito-podrian-cenirse-a-una-slot-que-pueda-ser-nueva","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/pero-igualmente-los-cinco-euros-sin-cargo-desprovisto-deposito-podrian-cenirse-a-una-slot-que-pueda-ser-nueva\/","title":{"rendered":"Pero igualmente los cinco euros sin cargo desprovisto deposito, podrian cenirse a una slot que pueda ser nueva"},"content":{"rendered":"

Con de manera sutil sobre fortuna, podriamos cumplir el estado para bonos falto tanque con el fin de apartar nuestro dinero. Un bono sobre cinco euros sin cargo sin tanque,es de tragaperras cual deseen promocionar. Cualquier casino del tipo seri\ufffda la persona facilita jugar sobre el novio sin elaborar nadie inscripcion previo, a traves de dicho bono de audiencia. Os daremos las parejas detalles de de que forma hacen el trabajo bien los casinos online con bonos desprovisto tanque.<\/p>\n

Las bonos carente tanque resultan legales continuamente cual nuestro casino cuente con el pasar del tiempo licencia de la Direccion Total sobre Ordenamiento de el Juego ( Ebingo<\/a> DGOJ) asi\ufffd como cumpla la normativa vivo. Suin reclaental que sepas las terminos y no ha transpirado modos cual lo acompanan. En cierta ocasion verificada la cuenta, nuestro bono inscribiri? activara automaticamente o bien en el momento en que tu perfil, conforme nuestro camara.<\/p>\n

Igual que comentamos anteriormente, si pudiese competir aquellos juegos, tiene que corroborar lo que contribuyen a la zapatilla y el pie capacidad sobre reinversion, por consiguiente nunca todo el mundo contaran para tal al siguiente exigencia de apuesta estrecha. Debes examinar las terminos asi\ufffd como modos de el promocion detenidamente porque existen casinos cual excluyen varios juegos, igual que las juegos sobre casino sobre listo. ?Podria utilizar las creditos sobre descuento falto tanque en todo entretenimiento que quiera? Lo cual se puede realizar seri\ufffda igos que pueden examinar los excelentes bonos desprovisto deposito referente a la plana previa a utilizar asimismo de hombres.<\/p>\n

De poder retirar los ganancias obtenidas usando bono, hemos cumplir algun condicion de apuesta de 70 ocasiones el importe del bono. Los ganancias obtenidas estan sujetas en campos de puesta en obtener retirarse. El bono se acredita automaticamente y deja gozar de los juegos sobre casino desplazandolo hacia el pelo slots desprovisto necesidad de hacer un deposito precedente. Un bono sobre eficaz de retar de forma libre a los juegos sobre casino online. Suele utilizarse con el fin de retar dentro del bingo conforme los palabras de la tarima.<\/p>\n

Halle tres o sobra cucarachas en las carretes asi\ufffd como provocara 12 juegos de balde joviales premios dobles. Gane el copia con los ardientes chiles en caso de que los localiza en las lineas de pago desplazandolo hacia el pelo condimente sus premios con el destaque de postura. ?Suele hallar el de cualquier parte del mundo mas profusamente picante asi\ufffd como ganar enormes premios? Deseamos lidiar con ayudar a las jugadores de casino online de la patologi\ufffda del tunel carpiano derecho a elegir las juegos sobre casualidad, para el resto de categorias fundamentadas con superior promociones carente tanque.<\/p>\n

Las casinos con el pasar del tiempo bono de recibimiento carente tanque son la excepcional oportunidad de cero millas jugadores que desean reconocer las plataformas legales sin exponer la zapatilla y el pie dinero. Aprovechar las casinos en compania de bonos carente tanque es la forma mayormente fiable desplazandolo hacia el pelo simple de reconocer algun casino online, familiarizarte que usan dicho tarima asi\ufffd como ganar dinero conveniente falto efectuar un deposito. Nuestro dinero gratuito carente tanque brinda mas liberacion de elegir juego, sin embargo normalmente significa campos de envite mas altos desplazandolo hacia el pelo algun margen sobre retirada concrecion. Al completo bono desprovisto tanque referente a casino facilita jugar sobre casinos en internet sin pagar dinero mismo asi\ufffd como provee ocasii?n de probar juegos sin cargo, ganar premios reales desplazandolo hacia el pelo encontrar plataformas falto riesgo. Concebir esa diferencia impide pensar cual un monton de cual resulte posible con el pasar del tiempo algun bono carente deposito sobre cualquier casino en internet sobre Argentina estara vacante de cobrar automaticamente.<\/p>\n

Las jugadores mayoritariamente cual lean lo cual podran pensar cual la propuesta nunca sirve la amargura, por consiguiente probablemente tendria algun naturaleza de apuesta gran. Entre los promociones cual invariablemente sirve una pena reclaos las codigos de bono carente tanque de $30. Igualmente, si una publicidad resultara algun bono desprovisto deposito completamente retirable, incluso leeras sobre como retirar hacen de ganancias, en caso de que los hay.<\/p>\n

Eso mientras te explicamos, a que es lo primero? anhelo cualquier casino en internet en compania de las promociones carente deposito<\/h2>\n

Incluso la ocasion, solamente debemos visto bonos sin deposito que existen para quienes realizan su cumpleanos. Los ganancias obtenidas de aquellos bienes podrian retirarse en cierta ocasion cumplidos los instalaciones. Con el fin de convertirlos en dinero real, el componente debe seguir joviales instalaciones de postura especializados, apostando varias veces la importancia del bono sobre juegos seleccionados. Si prefieres mas lapso, Platin Casino brinda 12 giros sin cargo asi\ufffd como un decenio de 15 momentos para respetar los instalaciones de apuesta, con una gran ganancia principio de 25\ufffd.<\/p>\n

Solicitar las bonos falto deposito seri\ufffda cualquier transcurso realmente agradable de un monton de casas de esparcimiento. Asi que, modo sobre animarte a que os entre a la colectividad mas digital hoy en dia seri\ufffda ofreciendote bonos carente deposito una vez que descargas una app y tambien en la utilizan por inicial oportunidad. Resulta que algunos bonos sin deposito llegan a convertirse en focos de luces activan mediante algun legislacion la cual otorga nuestro casino acerca de Argentina. Lo mejor de dichos bonos carente tanque podri\ufffda ser no son demasiado restrictivos igual que otras.<\/p>\n

Nuestro achuchado reticula de modos es una consecuencia directa del caracter \ufffdgratuito\ufffd del bono sin tanque<\/h2>\n

Las juegos de casino sobre avispado deben de edad costes operativos con el fin de nuestro casino. No obstante los palabras y no ha transpirado formas dictan empecemos por el principio juegos es posible juguetear, ciertos juegos llegan a convertirse en focos de luces asocian mas profusamente frecuentemente con los bonos falto tanque. Nuestro uso exitoso de cualquier bono sin deposito es una forma de navegacion positivo por pura casualidad. Lo cual implica cual \ufffdmaximizar\ufffd algun bono carente tanque tiene menor que mirar con la suerte y mayormente usando esparcimiento importante dentro de las limitaciones predefinidas debido al casino. Tienes algun lapso restringido para utilizar el bono desplazandolo hacia el pelo para respetar en compania de los novios campos de puesta.<\/p>\n","protected":false},"excerpt":{"rendered":"

Con de manera sutil sobre fortuna, podriamos cumplir el estado para bonos falto tanque con el fin de apartar nuestro dinero. Un bono sobre cinco euros sin cargo sin tanque,es de tragaperras cual deseen promocionar. Cualquier casino del tipo seri\ufffda la persona facilita jugar sobre el novio sin elaborar nadie\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-14450","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14450","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=14450"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14450\/revisions"}],"predecessor-version":[{"id":14451,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/14450\/revisions\/14451"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=14450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=14450"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=14450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}