/* 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":1620,"date":"2025-10-01T07:41:47","date_gmt":"2025-10-01T07:41:47","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=1620"},"modified":"2026-03-30T11:05:38","modified_gmt":"2026-03-30T11:05:38","slug":"fortune-gems-2-demo-gratis-juego-de-casino-en-10","status":"publish","type":"post","link":"https:\/\/klecet.edu.in\/alumni\/fortune-gems-2-demo-gratis-juego-de-casino-en-10\/","title":{"rendered":"Fortune Gems 2 Demo Gratis Juego De Casino En MEXBOSS"},"content":{"rendered":"

El juego opera con una estructura sencilla de 3 carretes y 3 filas con 5 l\u00edneas de pago fijas, ofreciendo a los jugadores formas consistentes de ganar. A diferencia de otros, mantiene inteligentemente los elementos de audio sin abrumar el ambiente que pretende crear, asegurando que los jugadores no se sientan desbordados. Los s\u00edmbolos tem\u00e1ticos y las funciones de bonificaci\u00f3n bien equilibradas ofrecen tanto emoci\u00f3n como grandes oportunidades de ganancia. Su dise\u00f1o colorido, jugabilidad fluida y excelentes efectos visuales crean una experiencia inmersiva desde la primera tirada. Adem\u00e1s, el minijuego \u201cGemas Encadenadas\u201d reemplaza la antigua rueda de la suerte y puede a\u00f1adir comodines pegajosos durante tres turnos consecutivos.<\/p>\n

Revisa la tabla de pagos<\/h2>\n

La inclusi\u00f3n de un premio tan alto es un gran atractivo para aquellos que buscan maximizar sus ganancias potenciales mientras disfrutan de una experiencia de juego visualmente impresionante y culturalmente rica. Este sistema no solo aumenta la emoci\u00f3n de cada giro, sino que tambi\u00e9n ofrece a los jugadores la posibilidad de obtener recompensas significativas. La disposici\u00f3n clara y las instrucciones f\u00e1ciles de seguir aseguran que los jugadores puedan concentrarse en la emoci\u00f3n del juego en lugar de perderse en men\u00fas complicados. El juego se caracteriza por su interfaz intuitiva, permitiendo que tanto novatos como expertos disfruten sin complicaciones.<\/p>\n

Tiradas gratis con multiplicador<\/h2>\n

Esto significa que las victorias ser\u00e1n frecuentes, pero con montos variables que mantienen la emoci\u00f3n en cada giro. Examinamos y verificamos la informaci\u00f3n compartida para garantizar su precisi\u00f3n. Con un RTP de 97%, la tragamonedas Fortune Gems 2 ofrece una experiencia de juego emocionante que supera el RTP promedio del 95% al 96,49% en Chipy.com. Presione el bot\u00f3n grande “Girar” en la parte inferior derecha de la interfaz del juego para que los carretes giren. Este juego es ideal para jugadores preocupados por su presupuesto que buscan un buen equilibrio entre riesgo y recompensa.<\/p>\n

Fundada con el objetivo de ofrecer experiencias de juego innovadoras y de alta calidad, TaDa Gaming se ha destacado por sus tragamonedas con gr\u00e1ficos atractivos y mec\u00e1nicas de juego din\u00e1micas. Esta configuraci\u00f3n cl\u00e1sica se combina con caracter\u00edsticas modernas para ofrecer una experiencia de juego equilibrada y emocionante. Ambientado en un entorno de jungla misteriosa, el juego presenta una est\u00e9tica visual atractiva con s\u00edmbolos de gemas brillantes y una atm\u00f3sfera que evoca aventuras en busca de tesoros perdidos. Esta nueva entrega mantiene la esencia del original pero introduce mejoras significativas que elevan la experiencia de juego. Lo \u00fanico recomendable es jugar informado, ajustar tu apuesta, aprovechar bien las funciones del juego y mantener siempre control sobre tu presupuesto. S\u00ed, muchos operadores y sitios de rese\u00f1as ofrecen la demo gratis accesible tambi\u00e9n para usuarios en M\u00e9xico.<\/p>\n

\u00bfPuedo jugar Fortune Gems 2 sin invertir dinero?<\/h2>\n

Centrada en los usuarios de smartphones y tabletas, Fortune Gems online proporciona una calidad de gr\u00e1ficos y caracter\u00edsticas interactivas constantes con la versi\u00f3n de escritorio del juego de casino. La m\u00e1quina tragaperras Fortune Gems est\u00e1 dise\u00f1ada con total compatibilidad m\u00f3vil, asegurando una experiencia de juego impecable en dispositivos iOS y Android. Esta opci\u00f3n estrat\u00e9gica puede ser clave para los jugadores que buscan mejorar su potencial de ganancias durante el juego.<\/p>\n

Caracter\u00edsticas Principales del Juego<\/h2>\n

En M\u00e9xico, muchos jugadores buscan primero informaci\u00f3n general sobre el juego antes de decidir si quieren probarlo en demo o pasar directamente al modo con dinero real. Fortune Gems 2 es una tragamonedas online pensada para quienes prefieren una mec\u00e1nica clara, una interfaz f\u00e1cil de seguir y partidas con ritmo r\u00e1pido. Los jackpots y multiplicadores dependen del dise\u00f1o del juego y de la plataforma donde se juegue. Siempre revisa la informaci\u00f3n oficial dentro del juego antes de apostar.<\/p>\n

Aunque Fortune Gems 2 es un juego de azar, tener una estrategia b\u00e1sica y controlar tu presupuesto puede marcar la diferencia entre una sesi\u00f3n divertida y una frustrante. De hecho, aunque algunos sitios ofrecen enlaces para descargar Fortune Gems 2, lo m\u00e1s pr\u00e1ctico es jugarlo directamente en l\u00ednea. Sin embargo, si prefieres funciones m\u00e1s complejas o la emoci\u00f3n de un gran jackpot, este t\u00edtulo podr\u00eda quedarse corto.<\/p>\n

Por eso conviene probar demo y jugar con un presupuesto razonable. La condici\u00f3n exacta puede variar seg\u00fan la versi\u00f3n, as\u00ed que revisa la tabla de pagos dentro del juego. La interfaz se adapta a pantallas t\u00e1ctiles y funciona desde el navegador sin necesidad de descargar aplicaciones. Puedes jugar en modo demo gratis para conocer la interfaz y las funciones sin apostar dinero real.<\/p>\n

Jugar en modo demo te permitir\u00e1 familiarizarte con los s\u00edmbolos, l\u00edneas de pago y multiplicadores que la convierten en una tragaperras \u00fanica. Con un poco de estrategia y suerte, podr\u00edas encontrar el camino hacia las gemas ocultas de esta ciudad m\u00edtica. Fortune Gems no solo ofrece una experiencia de juego visualmente atractiva, sino que tambi\u00e9n proporciona m\u00faltiples oportunidades para ganar con sus caracter\u00edsticas especiales. Esta flexibilidad permite a los jugadores ajustar sus apuestas seg\u00fan su presupuesto y estrategia de juego. Aqu\u00ed te proporciono un desglose de los elementos clave relacionados con las apuestas, el retorno al jugador (RTP) y la varianza del juego. Esta caracter\u00edstica es especialmente atractiva para aquellos que disfrutan de la emoci\u00f3n de las grandes victorias.<\/p>\n

Rueda de la Suerte (Lucky Wheel)<\/h2>\n

El demo Fortune Gems 2 suele estar disponible directamente en la p\u00e1gina del casino o en plataformas que ofrecen juegos de prueba. El juego combina una est\u00e9tica de fantas\u00eda con una interfaz moderna y clara, dise\u00f1ada para jugar r\u00e1pido en PC o desde el celular. Tan sencillo como darle play y familiarizarte con los s\u00edmbolos antes de jugar con dinero real. Aqu\u00ed te dejamos algunos de los sitios m\u00e1s confiables donde puedes probar la demo y, si quieres, jugar con dinero real. Es tan sencillo como apretar un bot\u00f3n y dejar que la suerte haga lo suyo.<\/p>\n

🔎 Rese\u00f1a de la Tragaperras Fortune Gems<\/h2>\n

La versi\u00f3n demo Fortune Gems 2 est\u00e1 disponible sin necesidad de registro en numerosos casinos en l\u00ednea. Abre el juego desde un casino oficial o plataforma de aplicaci\u00f3n de casino. Estas bonificaciones brindan emoci\u00f3n adicional sin complicar las reglas. Cada s\u00edmbolo tiene un valor espec\u00edfico que determina su potencial de ganancia cuando forma combinaciones en las l\u00edneas de pago.<\/p>\n