/* 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":71010,"date":"2026-05-22T21:38:47","date_gmt":"2026-05-22T21:38:47","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71010"},"modified":"2026-05-22T21:38:48","modified_gmt":"2026-05-22T21:38:48","slug":"una-vez-que-hayas-libertino-su-bono-sin-deposito-seguramente-querras-retirarlo-lo-mas-rapido-probable","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/una-vez-que-hayas-libertino-su-bono-sin-deposito-seguramente-querras-retirarlo-lo-mas-rapido-probable\/","title":{"rendered":"Una vez que hayas libertino su bono sin deposito, seguramente querras retirarlo lo mas rapido probable"},"content":{"rendered":"

Generar un perfil es cualquier condicion preciso para alcanzar a cualquier bono carente tanque<\/h2>\n

Por ese motivo, algunos casinos en internet inclusive os tienen bonos para depositar en el caso de que nos lo olvidemos arrinconar empleando la eleccion. El fin de las seri\ufffda utilizar Winbet<\/a> dentro del maximo los bienes propios asi\ufffd como nuestro bono sobre bienvenida sin deposito. Es decir tal como serian ideales si necesitas cumplir en compania de pocos instalaciones sobre puesta para eximir un bono. Importa cual consultes esa informacion en las condiciones asociadas en la rebaja. Esto suele cambiar segun el metodo sobre paga y nuestro casino online donde estes registrado.<\/p>\n

Continua mostrando entre nuestras publicaciones y no ha transpirado disfruta de la pericia sobre juego segura y no ha transpirado desprovisto peligros<\/h2>\n

El primer camino con el fin de obtener un bono falto tanque es generar una cuenta sobre un casino con atribucion. Primero, deberias reconocer empecemos por el principio casinos joviales facultad de su DGOJ siguen actualmente este tipo de promocion. Por lo que sobre los subsiguientes lineas os presentamos las 3 superiores casinos de los que se podri? adquirir un bono sin tanque.<\/p>\n

Se podri\ufffdan mover dinamica normalmente buscando nuestro sometimiento y tambien en la demostracion de el cuenta, y no ha transpirado puede ofrecerse en buena condicion fisica sobre giros sin cargo en el caso de que nos lo olvidemos saldo promocional. De algunos que se encuentran comenzado, dar con bonos falto tanque puede ser tan emocionante igual que comenzar algun obsequio inesperado. Alguno puedo decir cual hacen el trabajo bien igual que una grifo con el fin de indagar nuevas alternativas, la especie de degustacion de el menu de el casino. Estos chicos tesoros posibilitan a los jugadores internarse sobre la experiencia sobre un casino online sin necesidad sobre colocar dicho personal recursos en peligro por el primer segundo.<\/p>\n

Determinados casinos en internet hablan algun maximum a la na? cual puedes apartar de estas ganancias obtenidas con un bono sin deposito. Nuestro arduo reticula sobre esencia resulta una resultado directa del caracter \ufffdgratuito\ufffd de el bono carente deposito. Una suma de estas limitaciones obliga cual convertir un bono desprovisto deposito en eficaz fundamental y no ha transpirado retirable seri\ufffda cualquier reto, sin embargo no inviable.<\/p>\n

Locowin asimismo provee la magnifico seleccion sobre juegos de banco tipicos, igual que el blackjack, una ruleta y nuestro poker. Locowin Casino ofrece un largo bono de bienvenida para los nuevos jugadores que si no le importa hacerse amiga de la grasa registren por Portugal. Los como novedad jugadores podran aprovechar nuestro locowin bono sobre bienvenida, cual brinda cualquier impulso fundamental an es invierno bankroll original. Locowin provee una gran diversidad de metodos de paga, lo que posibilita a los jugadores espanoles efectuar depositos y retiros sobre manera rapida y fiable. Las retiros demoran dentro de 24 y 72 mucho tiempo habiles, pues separado si no le importa hacerse amiga de la grasa posibilitan a traves de transferencias bancarias.<\/p>\n

Cualquier esparcimiento de casino online permite aportar en compania de un conjunto distinta a los instalaciones sobre puesta de el bono carente deposito. Un aspecto significativo a meditar dentro del usar referente a las casinos sus bonos sobre recibo regalado desprovisto tanque es nuestro llamado rollover de el bono, en otras palabras, las requisitos de envite. Asi\ufffd como, pienso, quedar al tanto si la regulacion sobre el casino online acerca de Chile pequeno el paraguas regulatorio de la DGOJ deja en este instante presentar bonos sobre recibo gratis carente deposito. Atane haber en consideracion diferentes aspectos sin aspirar para usar un bono sin tanque referente a cualquier casino online.<\/p>\n

Tragaperras sin descargaTiradas gratis asi\ufffd como de mayor?De que manera funcionan los bonos desprovisto tanque? Algun bono sin deposito es una proposicion que las casinos en internet brindan en recientes jugadores, permitiendoles competir sin necesidad de elaborar algun tanque inaugural.<\/p>\n

En entero elije estrategia desglosamos nuestro precio del bono, los juegos elegibles y no ha transpirado, lo mas fundamental, la contribucion alrededor rollover; algun prueba vital para conocer las condiciones de libertad. 5?? ?Existe algunas impedimentos si esparcimiento con un bono desprovisto tanque? Existe bastantes bonos falto deposito interesantes en el comercio, pero creemos que las bonos sin deposito de Gratogana desplazandolo hacia el pelo de OneCasino resultan para los excelentes. La enorme diversidad sobre bonos falto deposito cual existe alrededor mercado podrian llevarte en reclaar los novios bonos sin deposito seri\ufffda cualquier malentendido. Aunque es evidente cual los bonos falto tanque serian extremadamente utiles, no es fortuna un maximo de cual reluce.<\/p>\n

Los juegos que hay en el comercio para bonos sin tanque podrian incluir tragamonedas, juegos sobre banco y, en algunos casos, juegos de casino en presto. Ahora los bonos de casino online y los bonos de audiencia resultan 100% legales y tienen seguridad acerca de su canjeo desplazandolo hacia el pelo trato acerca de Ciertas zonas de espana. En caso de que te gustaria de mas posibilidades sumado a los bonos sin tanque, explora nuestra seleccion sobre casinos con manga larga tiradas gratis desplazandolo hacia el pelo bonos sobre casino sin tanque.<\/p>\n

Todos estos de aca arriba si no le importa hacerse amiga de la grasa traducen sobre bonos recibimiento de balde desprovisto tanque De cualquier parte del mundo para las otras tragaperras del casino. Los casinos bonos audiencia de balde desprovisto deposito Espana en realidad hablan cada cosa que que supongan nunca recolectar siquiera algun euro. ?Todo lo cual precisas de ser un ‘as’ del casino nadie pondri\ufffda en duda desde el minuto 1 varios de estos bonos de recibo!<\/p>\n

Dentro de la diferentes casinos bonos desprovisto tanque desplazandolo hacia el pelo publicaciones, al momento igualmente dificil de el programa usuario designar una plataforma de experimentar. Todos compiten por seducir mas usuarios, asi\ufffd como entre los medios sobre seguir oriente objeto son los anuncios sobre bonos desprovisto deposito. La tercera modo mas fiable desplazandolo hacia el pelo comodo sobre conseguir bonos sin tanque seri\ufffda echando un ojo a nuestra pagina. Detras de dirigirte a la seccion de promociones notaras muchas ofertas actuales de el casino, dentro de los cuales deberias encontrar el bono carente tanque. Hay el riesgo de que, justamente acerca de cualquier instante, nuestro casino realice hincapie sobre otras promociones y tambien en la documentacion sobre los bonos sin tanque quede desplazada para diferentes ofertas.<\/p>\n","protected":false},"excerpt":{"rendered":"

Generar un perfil es cualquier condicion preciso para alcanzar a cualquier bono carente tanque Por ese motivo, algunos casinos en internet inclusive os tienen bonos para depositar en el caso de que nos lo olvidemos arrinconar empleando la eleccion. El fin de las seri\ufffda utilizar Winbet dentro del maximo los\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-71010","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71010","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=71010"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71010\/revisions"}],"predecessor-version":[{"id":71011,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71010\/revisions\/71011"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71010"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}