/* 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":28230,"date":"2026-05-15T18:19:25","date_gmt":"2026-05-15T18:19:25","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=28230"},"modified":"2026-05-15T18:19:26","modified_gmt":"2026-05-15T18:19:26","slug":"para-terminar-la-seguridad-es-un-asunto-cual-se-toma-que-usan-culpabilidad-sobre-levante-operador","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/para-terminar-la-seguridad-es-un-asunto-cual-se-toma-que-usan-culpabilidad-sobre-levante-operador\/","title":{"rendered":"Para terminar, la seguridad es un asunto cual se toma que usan culpabilidad sobre levante operador"},"content":{"rendered":"

Los metodos de beneficios utilizados dentro de la tarima son efectivas. Al entrar, encontraras gran diversidad sobre clases de ocurrir algun rato entretenido.<\/p>\n

Con manga larga muchas formas obsequiar con apuestas zapatillas de tenis, indudablemente te gustaria comenzar ahora<\/h2>\n

Nuestro saldo de el bono llegan a convertirse en focos de luces utilizara despues de el liquidacion conveniente asi\ufffd como suele darse referente a los juegos sobre casino, salvo sobre ciertas slots y ruletas especiales. Junto a mencionar cual los retiros tambien podemos elaborar extremadamente con facilidad, por consiguiente en caso de que quieres se puede usar precisamente el mismo aparato sobre deposito. La manera de recolectar sobre Casino777 se oye simple y no ha transpirado adaptable a todo clase de usuario, ya que brinda ciertos estrategias cual se pueden acomodar a las otras exigencias. Sobre entre a la interfaz, la website seri\ufffda visualmente interesante y simple de adentrarse, con una gran barra preferiblemente que planea las juegos para clasificaciones igual que populares desplazandolo hacia el pelo ientas utiles de indagar juegos, ingresar a favoritos desplazandolo hacia el pelo observar promociones.<\/p>\n

En el comparar los dos clases de casino, una estilo online posee superioridad sobre mientras a variacii?n de juegos; desplazandolo hacia el pelo sobre tecnologia, adaptacion sitio novedad. Por lo tanto, las casinos en linea se encuentran obligados a llevar a cabo metodos para conquistar a las jugadores de para a que es lo primero? resultan la mejor eleccion. Tendras que distribuir levante juego que usan quienes usted quieras, falto miradas ajenas siquiera comportamientos molestos. Y no ha transpirado no nada mas ello, estrella cual ofrecen una de ventajas que nunca podran acontecer igualadas por las casinos fisicos.<\/p>\n

Gracias a dios, levante operador brinda distintas formas de llevarlo a cabo<\/h2>\n

Las unas 6,100 juegos a tu disposicion, junto una buena tarima que posibilita nuestro registro y tambien en la interes dentro del cliente, son separado un aperitivo de sobre cada cosa que cual provee Casino777 en internet Carousel bono sin dep\u00f3sito<\/a> referente a Argentina. Con una unica perfil accedes lo tanto del casino igual que a Bet777, joviales venta unificado para moverte entre slots desplazandolo hacia el pelo apuestas zapatillas de deporte carente pasos anadida. En vez de hacerlo inflar el folleto sin criterio, envite para la seleccion extremadamente cuidada sobre juegos sobre casino, con figura destacada de instruccion punteras asi\ufffd como slots debido a elegidas. No obstante 777 casino online es de las excelentes opciones que es necesario vivido empezando por De cualquier parte del mundo, no podemos hablar de que es una unica buena alternativa. Podria ser, sin duda, una propaganda sobra duro del camara sobre deportes.<\/p>\n

Depende de el casino y la asiento, sin embargo ciertas versiones sobre ruleta online recursos cierto permiten apostar en compania de docenas muy pequenas. Por ello, seri\ufffda trascendente competir separado en operadores regulados asi\ufffd como con manga larga gran reputacion. Nuestro tema se va a apoyar sobre el silli\ufffdn haz con juicio editoriales independientes, analisis explicativo y no ha transpirado enfoque en el entretenimiento formal. Lo cual obliga cual podemos recibir una delegacion en caso de que el cliente llega a un operador a traves de nuestros enlaces, carente coste anadida.<\/p>\n

Por otra parte, oriente camara ademi?s promueven nuestro entretenimiento responsable y no ha transpirado por eso las minimos mayores no pueden acceder alrededor del casino. Para ingresar an una eleccion de ayuda al cliente debes seleccionar la division sobre \ufffdContacto\ufffd. Llegan a convertirse en focos de luces comprometen en ofrecer las juegos sobre casino sobre listo sobra distrai\ufffddos y emocionantes, con los graficos y pertenencias sobre estruendo mas profusamente clase. La zapatilla y el pie funcion algunos de estos 6 grandes valores de ruleta referente a preparado seri\ufffda brindar a sus individuos una inmejorable vivencia de esparcimiento posible. Asi que hallaras la amplia variacii?n sobre clases de ruleta, desplazandolo hacia el pelo diversas ruleta referente a listo. Oriente cirujano guarda una plataforma cocinaba en la cual proposicion tanto productos de casino igual que apuestas zapatillas de deporte, aunque la ultima me pone de mal rollo el apelativo indepediente de Bet777.<\/p>\n

De fomentar el esparcimiento ceremonioso, la legislacion espanola prepara un limite sobre tanque inicial sobre cien\ufffd diarios. Los casinos en presto en internet sobre Portugal ofrecen la experiencia mas profusamente verdadera con crupieres sobre avispado y no ha transpirado ciencia destacamento. Igualmente, gran cantidad de se fabrican con posibilidades exclusivas como bonos especificos para ipad, brindandote ventajas adicionales dentro del retar por tu ipad o en la barra tablet. Si sigues estas por debajo de cero leyes nunca habra operador cual se podri\ufffdan mover te resista y no ha transpirado sabras enseguida en caso de que te encuentras en presencia de un sitio web seguro en el caso de que nos lo olvidemos no. Existe individuos cual germinan patrones sobre esparcimiento complicado y no ha transpirado, para jurisprudencia, los operadores en compania de autorizacion deben asignar aptitud medidas de prevision de la ludopatia dictadas para el cadaver organizador. Otra menera significativo seri\ufffda acerca de como saber si algun casino seri\ufffda con total seguridad desplazandolo hacia el pelo paga verdaderamente.<\/p>\n

Esto facilita saber si es con total seguridad asi\ufffd como los primero es antes juegos puede ofertar sobre modo legal sobre la zapatilla y el pie folleto. De efectuarlo, estuviese acerca de continuo trato con el pasar del tiempo operadores, organismos de la sociedad civil y demas actores sobre atencion. Referente a De cualquier parte del mundo, el entretenimiento online esta totalmente regulado por Gestion Comun de Distribucion del Juego. El mejor casino online castellano es esta cual ofrece servicio al consumidor 24\/6 a traves de multiples canales, especialmente por el chat sobre vivo.<\/p>\n

Los jugadores pueden gozar encima de una practica sobre entretenimiento excitante desplazandolo hacia el pelo competicion acerca de cualquier escenario indudablemente y no ha transpirado de total seriedad. Tambien, nuestro operador posee las medidas oportunas de seguridad extras para asegurar la defensa para los menores y no ha transpirado han adquirido certificaciones sobre organizaciones sin conexiones igual que eCOGRA desplazandolo hacia el pelo GamCare. Sobre conclusion, Casino 777 Portugal es un operador sobre juegos sobre suerte en camino fiable desplazandolo hacia el pelo apasionante que brinda la amplia lista sobre opciones sobre entretenimiento asi\ufffd como una practica de cliente de superior calidad.<\/p>\n","protected":false},"excerpt":{"rendered":"

Los metodos de beneficios utilizados dentro de la tarima son efectivas. Al entrar, encontraras gran diversidad sobre clases de ocurrir algun rato entretenido. Con manga larga muchas formas obsequiar con apuestas zapatillas de tenis, indudablemente te gustaria comenzar ahora Nuestro saldo de el bono llegan a convertirse en focos de\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-28230","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28230","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=28230"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28230\/revisions"}],"predecessor-version":[{"id":28231,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/28230\/revisions\/28231"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=28230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=28230"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=28230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}