/* 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":71838,"date":"2026-05-22T21:57:57","date_gmt":"2026-05-22T21:57:57","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71838"},"modified":"2026-05-22T21:57:59","modified_gmt":"2026-05-22T21:57:59","slug":"cuando-hayas-liberado-tu-bono-falto-tanque-seguramente-querras-retirarlo-tan-pronto-viable","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/cuando-hayas-liberado-tu-bono-falto-tanque-seguramente-querras-retirarlo-tan-pronto-viable\/","title":{"rendered":"Cuando hayas liberado tu bono falto tanque, seguramente querras retirarlo tan pronto viable"},"content":{"rendered":"

Crear un perfil seri\ufffda algun exigencia imprescindible para acceder an al completo bono carente deposito<\/h2>\n

Debido a ello, determinados casinos en internet incluso te tienen bonos por almacenar en el caso de que nos lo olvidemos jubilar usando esa eleccion. Nuestro objeto de estas es aprovechar alrededor maximo las recursos propios asi\ufffd como nuestro bono de admision desprovisto tanque. En otras palabras tal como son ideas en caso de que necesitas seguir que usan los campos sobre apuesta con el fin de eximir un bono. Atane cual consultes esta noticia sobre la prediccion asociadas a una descuento. Lo cual suele cambiar conforme el modo de pago desplazandolo hacia el pelo el casino online donde estes anotado.<\/p>\n

Prosigue indicando entre nuestras ofertas asi\ufffd como dispone de la pericia de juego segura asi\ufffd como falto riesgos<\/h2>\n

Nuestro inicial paso para sacar un bono carente tanque seri\ufffda generar una cuenta referente a un casino que usan licencia. Primero, debes asimilar lo que casinos que usan facultad de la DGOJ se fabrican con hoy esa publicidad. Asi que referente a las siguientes lineas os brindamos los tres excelentes casinos de los cuales se puede hacerte con algun bono carente tanque.<\/p>\n

Se podri\ufffdan mover activa normalmente tras nuestro registro y la demostracion de el perfil, y no ha transpirado suele ofrecerse en buena condicion fisica sobre giros de balde o saldo promocional. Con el fin de algunos que estan comenzado, hallar bonos carente deposito puede ser tan excitante igual que comenzar cualquier regalo impensado. Individuo puedo declarar cual trabajan igual que una llave para investigar nuevas opciones, una tipo de degustacion del menu de el casino. Estos diminutos tesoros posibilitan a los jugadores introducirse en la pericia de cualquier casino online desprovisto necesidad de colocar la zapatilla y el pie personal recursos referente a riesgo empezando por nuestro primer momento.<\/p>\n

Ciertos https:\/\/boaboa-es.com\/<\/a> casinos en internet dicen cualquier maximo a la numero que se puede apartar de las ganancias obtenidas con cualquier bono falto tanque. Nuestro complicado pi?gina de esencia es una consecuencia directa de el indole \ufffdgratuito\ufffd de el bono falto tanque. Una suma de las limitaciones obliga cual transformar cualquier bono falto deposito referente a efectivo esencial y no ha transpirado retirable seri\ufffda un reto, sin embargo no irrealizable.<\/p>\n

Locowin ademas brinda la excelente coleccion sobre juegos de asiento clasicos, igual que el blackjack, una ruleta y el poker. Locowin Casino brinda cualquier esplendido bono de bienvenida de los nuevos jugadores cual se registren en el momento en que Ciertas zonas de espana. Los mas jugadores podrian aprovechar el locowin bono de recibimiento, que brinda cualquier estimulo significativo an es invierno bankroll original. Locowin ofrece una gran variedad de metodos de pago, lo cual permite a los jugadores espanoles efectuar depositos desplazandolo hacia el pelo retiros sobre manera rapida y no ha transpirado segura. Los retiros demoran entre 24 y no ha transpirado 72 muchas horas habiles, puesto que solo se podri\ufffdan mover posibilitan mediante transferencias bancarias.<\/p>\n

Cualquier esparcimiento sobre casino en internet podria argumentar que usan un porcentaje distinta a los campos sobre envite de el bono desprovisto deposito. Un aspecto fundamental a meditar en el utilizar sobre los casinos sus bonos de audiencia gratis desprovisto deposito seri\ufffda nuestro conocido como rollover de el bono, en otras palabras, las instalaciones de postura. Y no ha transpirado, claro, quedar al tanto en caso de que la regulacion sobre el casino online referente a Ciertas zonas de espana pequeno el sombrerp regulatorio de el DGOJ deja sobre esta instante ofertar bonos sobre recepcion gratuito sin deposito. Atane encontrarse en tu pensamiento diferentes enfoque para impedir optar por usar cualquier bono carente tanque sobre un casino online.<\/p>\n

Tragaperras falto descargaTiradas regalado y mas profusamente?De que manera funcionan las bonos falto tanque? Un bono desprovisto deposito es una oferta cual las casinos en internet brindan en mas jugadores, permitiendoles apostar sin urgencia sobre realizar algun deposito original.<\/p>\n

En cualquier ficha estrategia desglosamos el importe del bono, los juegos elegibles asi\ufffd como, lo mas significativo, una contribucion al rollover; algun referencia obligatoria con el fin de saber el estado de liberacion. 5?? ?Hay algunas impedimentos en caso de que entretenimiento con cualquier bono falto deposito? Existe muchos bonos carente tanque atractivos en el comercio, no obstante creemos que las bonos carente tanque de Gratogana desplazandolo hacia el pelo de OneCasino son para excelentes. La gran variacii?n sobre bonos desprovisto deposito cual tenemos en el mercado podrian llevarte a reclaar los bonos falto deposito seri\ufffda un malentendido. Si bien seri\ufffda exacto cual los bonos falto deposito significarian bastante interesantes, no nos referimos a opulencia cada cosa que que reluce.<\/p>\n

Los juegos a tu disposicion para bonos carente deposito podran insertar tragamonedas, juegos sobre caja de ahorros y no ha transpirado, a veces, juegos de casino en presto. Actualmente los bonos sobre casino online y los bonos sobre recibimiento resultan 100% legales y poseen confianza acerca de es invierno canjeo y uso acerca de De cualquier parte del mundo. En caso de que te gustaria de mayor opciones sumado a los bonos desprovisto deposito, explora nuestra eleccion sobre casinos con tiradas sin cargo desplazandolo hacia el pelo bonos sobre casino carente tanque.<\/p>\n

Dichos sobre aqui en lo alto inscribiri? traducen en bonos recibo de balde carente tanque Argentina en la circunstancia diferentes tragaperras del casino. Las casinos bonos admision gratuito carente tanque Ciertas zonas de espana realmente tratan cada cosa que cual hagan nunca almacenar ni un euro. ?Un maximo de que necesitas para ser cualquier ‘as’ del casino empezando desde el minuto ningun con estos bonos de bienvenida!<\/p>\n

Entre una largas horas casinos bonos desprovisto deposito y ofertas, siempre asimismo complicado del almohadillado con coolmax cliente seleccionar una tarima de experimentar. Todo el mundo compiten para fascinar nuevos clientes, y no ha transpirado una de los medios de seguir este proposito son las ofertas sobre bonos sin deposito. La tercera manera de mayor segura y comodo sobre sacar bonos carente deposito seri\ufffda echando atencii?n a nuestra pagina. Tras dirigirte an una seccion de promociones podras ver varias ofertas modernos del casino, dentro de los cuales deberias investigar el bono falto deposito. Existen nuestro peligro que, exacto acerca de cualquier instante, el casino realice hincapie acerca de diferentes promociones y tambien en la referencia de las bonos falto tanque quede desplazada para otras publicaciones.<\/p>\n","protected":false},"excerpt":{"rendered":"

Crear un perfil seri\ufffda algun exigencia imprescindible para acceder an al completo bono carente deposito Debido a ello, determinados casinos en internet incluso te tienen bonos por almacenar en el caso de que nos lo olvidemos jubilar usando esa eleccion. Nuestro objeto de estas es aprovechar alrededor maximo las recursos\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-71838","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71838","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=71838"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71838\/revisions"}],"predecessor-version":[{"id":71839,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71838\/revisions\/71839"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71838"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}