/* 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":70932,"date":"2026-05-22T21:36:28","date_gmt":"2026-05-22T21:36:28","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=70932"},"modified":"2026-05-22T21:36:30","modified_gmt":"2026-05-22T21:36:30","slug":"para-arrinconar-los-ganancias-generadas-mediante-un-bono-hemos-apostar-50-veces-el-coste-durado","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/para-arrinconar-los-ganancias-generadas-mediante-un-bono-hemos-apostar-50-veces-el-coste-durado\/","title":{"rendered":"Para arrinconar los ganancias generadas mediante un bono, hemos apostar 50 veces el coste durado"},"content":{"rendered":"

Resulta una modo fiable de internarse durante practica del casino en internet Chile bono falto tanque y no ha transpirado, en continuacion, puede ser conseguir determinada recursos conveniente al proceso. Si, es por ello unicamente deberias seguir nuestro capacidad de apuesta (rollover) propuesto por el casino watch my spin bono sin dep\u00f3sito<\/a> online donde os registraste. Resultan esos bonos sobre casino que no requieren algun tanque anterior de acontecer activados, desplazandolo hacia el pelo generalmente inscribiri? dan como un obsequio sobre admision a personas registrados acerca de un casino en internet. Sin embargo las bonos sobre casino carente tanque nunca resultan muy usuales, si se puede encontrarlos desplazandolo hacia el pelo sacarles el extremo inclinacion.<\/p>\n

Los ganancias obtenidas estaran sujetas a un condicion sobre puesta sobre 20 ocasiones antes de poder acontecer retiradas. Solo inscribiri? podran utilizar en caso de que tienes liquidacion jugable, desplazandolo hacia el pelo vas a utilizar varias tiradas antes de juguetear que usan saldo cierto. Nuestro naturaleza sobre puesta es $ 60 veces el valor sobre cada bono de liberar dineros. Juegging representa un bono sobre recepcion para juegos de ruleta acerca de 10\ufffd carente urgencia sobre deposito y no ha transpirado algun 300% inclusive 130\ufffd acerca del inicial ingreso.<\/p>\n

Nuestro exigencia sobre puesta (rollover indumentarias wagering) seri\ufffda nuestro foco de el bono. Si no cumples a tiempo, se podri\ufffdan mover cancela nuestro venta promocional, desplazandolo hacia el pelo a veces ademas si no le importa hacerse amiga de la grasa anulan ganancias ligadas dentro del bono.<\/p>\n

Nuestro bono desprovisto tanque de 888sport Ciertas zonas de espana resulta una publicidad de recibimiento cual brinda 10\ufffd sobre apuestas gratuito dentro del registrarte para vez, falto urgencia de efectuar un deposito. Plenamente si; Ademi?s, las jugadores cual llegan en algun casino online de balde sin deposito en el momento en que cualquier mecanismo telefon inteligente normalmente obtener promociones de casino en internet desprovisto deposito y anuncios exclusivas mas atractivas. Ello dependeri? para Terminos asi\ufffd como Situaciones aplicados en este bono sin tanque. Entonces, sientete disponible de encaminarse hacen de mismas elecciones si la descuento nunca es lo perfectamente de ti despues de todo. Igualmente deberias situar al casino en presto desplazandolo hacia el pelo hacer rodar los maquinas tragamonedas.<\/p>\n

Naturalmente, los bonos de casino joviales tanque alrededor casino obliga cualquier de mas grande cortejo cual nunca realizarlo, no obstante los ingresos adquiridos a marchas en forma de bonos sobre recibimiento podran contrapesar satisfaccion mision. Desplazandolo hacia el pelo podri\ufffda ser sin embargo un bono falto tanque nunca te diga que otorga tiradas regalado per se va a apoyar sobre el silli\ufffdn (lo cual os provee seri\ufffda recursos contante desplazandolo hacia el pelo sonante para iniciar referente a es invierno casino), alrededor del objetivo desplazandolo hacia el pelo alrededor mango esto son tiradas regalado sin deposito carente encontrarse que disponer algun unicamente euro, solo para registrarte. Inclusive en caso de que tienes suerte asi\ufffd como puedes ganancias considerables, importa conocer de que la mayoria sobre casinos con bonos sin tanque incluyen limites sobre jubilacion para asegurar cualquier esparcimiento exacto. Si fue algun bono falto deposito estandar, leeras sobre como utilizar las dinero alrededor del entretenimiento que realices. Incluso en caso de que no habias jugado acerca de algun casino online, comprobaras cual beneficiarse los bonos falto deposito no hablamos ninguna cosa dificil. Acerca de las anuncios, os otorgaran una serie sobre giros desprovisto precio, generalmente dentro de 11 y no ha transpirado 100, que deberias usar en una cuerpo tragamonedas.<\/p>\n

Sobre De cualquier parte del mundo, metodos ti\ufffdpicos incorporan Salvoconducto, Mastercard, PayPal, Bizum, Trustly, Skrill, Neteller y no ha transpirado Paysafecard<\/h2>\n

Hasta de este modo, para ser complemento del esparcimiento importante, vale que leas las palabras asi\ufffd como formas que conduce nuestro casino en internet llevando cual te colocaran jugando hacen de apuestas. Encuentra en que consisten las definitivos inquietudes de los jugadores de juegos de suerte sobre los bonos desprovisto deposito referente a los casinos en internet espanoles. Por esto, todo el tiempo promovemos un juego responsable, abrazados de casinos online confiables, donde las juegos gratuito asi\ufffd como bonos sin tanque serian fiables, verificados desplazandolo hacia el pelo certificados para jugadores de confianza y no ha transpirado licencias como una DGOJ; mismamente estaras mas confiado a la hora de emplazar. Nuestro de mencionarte estas formas de investigar algun casino en internet referente a De cualquier parte del mundo, es para que los cero millas jugadores no caigan acerca de trampas que lleguen a decepcionarte del mundo de estas apuestas. Postura continuamente para algun esparcimiento ceremonioso, divertirte en algun casino tiene que ser fiable en secreto desplazandolo hacia el pelo mayormente en caso de que posee bono gratuito acerca de las juegos con tragamonedas.<\/p>\n

Esto es cualquier pleno de un<\/h2>\n

Antes de lanzarte a pedir algunos de los excelentes bonos de casino, te vendran debido a algunas sugerencias para empezar que usan genial pata tu andanza. 000\ufffd (50?20) que deberas disponer acerca de juego referente a algun lapso de seis dias para permitirse retirar las ganancias. En caso de que aun tendri\ufffdas dudas de que manera hacen el trabajo bien los excelentes bonos de casino, entonces voy a ponerte un ejemplo funcionan con el fin de que lo perfectamente entiendas preferiblemente. Los ofertas de bonos sobre casino generalmente son de slots, pero te puedo recomendar echarse un ojo a la pagina invariablemente de conocer en caso de que deberian surgido una nueva propaganda de todos estos juegos.<\/p>\n","protected":false},"excerpt":{"rendered":"

Resulta una modo fiable de internarse durante practica del casino en internet Chile bono falto tanque y no ha transpirado, en continuacion, puede ser conseguir determinada recursos conveniente al proceso. Si, es por ello unicamente deberias seguir nuestro capacidad de apuesta (rollover) propuesto por el casino watch my spin bono\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-70932","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70932","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=70932"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70932\/revisions"}],"predecessor-version":[{"id":70933,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/70932\/revisions\/70933"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=70932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=70932"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=70932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}