/* 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":115260,"date":"2026-05-25T11:58:46","date_gmt":"2026-05-25T11:58:46","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=115260"},"modified":"2026-05-25T11:59:32","modified_gmt":"2026-05-25T11:59:32","slug":"the-main-benefit-provides-within-the-majestic-mermaid-game-make-position-even-far-more-fun","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/the-main-benefit-provides-within-the-majestic-mermaid-game-make-position-even-far-more-fun\/","title":{"rendered":"The main benefit provides within the Majestic Mermaid game make position even far more fun"},"content":{"rendered":"

Successful banking ensures that slots join incentive profits already are accessible<\/h2>\n

That have an enthusiastic RTP of % and you can reasonable volatility, this video game also offers constant gameplay with constant victories. At the same time, the fresh new Scatter symbol \ufffd the fresh Appreciate Boobs \ufffd trigger the new game’s special extra enjoys.<\/p>\n

If you prefer large benefits, discover put-based acceptance incentive ports that have obvious criteria. For every ports join incentive now offers an alternative sense, as well as the genuine well worth comes from just how with ease you could potentially convert it for the withdrawable winnings. Prompt and you can reliable withdrawals make sure winnings out of 100 % free spins for the sign-up will likely be reached without delay. A well-arranged slots invited give allows professionals to understand more about far more online game and extend game play versus added cost. A knowledgeable totally free spins sign-right up revenue are the ones that allow members to explore casino games on the web in place of a lot of constraints.<\/p>\n

The minimum is certainly one while the limit is actually 100 thus there’s a lot of option for one another reasonable and you may highest betters. There are also the fresh free revolves that you’ll winnings in the event the your fits at least three of your signs; there can be between you to definitely and you can ten totally free turns would love to be said. The new nuts symbol provides you with an enormous award out of 2,000 for people who spin five but there’s zero payout having coordinating three or four.<\/p>\n

Are you searching to understand more about Strange Unicorn within the an internet gambling establishment rather than impacting their handbag? Mysterious Unicorn slot regarding WMS try boasting an impressive Go back to User (RTP) out of 96.0% and you can providing the opportunity to safer restriction gains around x520. Whenever around three or even more Spread icons arrive, you are going to cause re also-spins one raise your possibility of getting large wins. The fresh Wild Mermaid symbol helps form effective combinations because of the substituting getting almost every other icons, while the Spread icon turns on the benefit possess even for more opportunities. During the Lock & Stream element, your assemble Honor icons, that offer dollars benefits centered on the wager proportions. The main benefit games during the Majestic Mermaid slot is designed to remain people interested and offer most solutions for gains.<\/p>\n

The fresh mysterious attract regarding mermaids-half-human, half-seafood beings with supernatural energies-produces the ideal backdrop to possess an immersive playing experience where anything seems it is possible to. Although not, despite the fun image there is certainly little or no even more possess otherwise incentives as well as the gamble is relatively simple. Earn Big which have Esoteric Slots from your residence free of charge!<\/p>\n

In order to strike a fantastic move, there is incorporated headings particularly Gaming Arts’ Pinatas Ole\ufffd, AGS’s Rakin’ Bacon\ufffd, Lightning Box’s 100x RA\ufffd, and you can Aruze’s Dance Panda Chance\ufffd. The best part about the entire round is the fact all of the gains feature a double multiplier that makes a change when your player made a decision to choice a considerably large amount of success. The gamer get up to forty free revolves when the he is actually fortunate to find the incentive cycles triggered and you can retriggered.<\/p>\n

While you are a fan Ultra Casino official site<\/a> regarding dream Vegas slots, your search ends right here. Offering 4 style of free spins and you may a great mermaid adventure so you can help you stay searching for Las vegas harbors gifts. Progressive free ports prepare a similar strike since the genuine-currency designs, that includes nuts icons, spread out will pay, and you can interactive added bonus series.<\/p>\n

You’ll be able to quickly learn and this online game suit your to tackle build and you will which extra cycles provide the top possibility of larger wins. This under water thrill can get you diving for the fishes (on most practical way you’ll) and searching for drowned value. And these are profits, Mermaid Beauty Position also provides an abundance of chances to score big that have its incentive provides. That alive suits awaits you every day-control the new mountain, assemble chips on the career, and you will open exclusive perks.<\/p>\n

The most significant appeal of one’s game was its 100 % free revolves element which have Insane Multipliers increasing your victories of the up to 5x. They spends 5 reels and you can 30 paylines featuring big icons portrayed by red-haired seductive mermaid, dolphins having wonderful decor, wonderful bracelets, containers filled up with fantastic coins and you can shells which have starfish. Ready to get an intense plunge of a lot leagues within the water to search for Mermaid’s Gold? To your potential for extreme victories and you will an intuitive design, the online game offers a blend of excitement and you can recreation which is sure to amuse participants. Participants can also be talk about the online game which have free Mystical Chance films slots, if you are real cash play initiate at only 0.20 for each twist, into the solution to bet around to possess big spenders seeking big excitement.<\/p>\n

Every victories within the incentive round are put into the remainder amount of credit until the incentive game has begun. That have 20 fixed paylines and you may a bet range of 0.20 to help you 100, Mermaid’s Win & Spin serves all the explorer-out of careful swimmers so you can strong-ocean high rollers. Elegant dolphins, pleasant turtles, golden crowns, and you can sparkling starfish twist across the monitor since the serene sound of your own ocean courses the excitement. Plunge towards a slot machines dream having Mermaid’s Profit & Spin\ufffd and you will embark on a captivating under water ports excitement, in which large victories wait for according to the game’s amazingly-obvious surf! The main benefit rounds was even better inside the quarter and you will money denomination ???? High reappearance!! During the bonus, all victories is actually doubled!<\/p>\n

Take pleasure in antique position technicians which have progressive twists and you may fascinating incentive cycles<\/h2>\n

The new slot even offers zero risky video game where you can just be sure to improve payout without incentive series having a multiplier. I find myself carrying my personal breath during the incentive cycles hoping observe your retrigger. This type of bonuses not just boost your winnings as well as incorporate an enthusiastic pleasing dimension of variability on the games, making sure you may be usually to your edge of their seat. Because you dive towards special series, you will have a world of wilds, scatters, and you will novel signs that improve your probability of achievements. The fresh new impress off Mysterious Unicorn goes beyond the fundamental gameplay; the incentive have it’s bring the fresh spotlight.<\/p>\n

Such passionate game mix gleaming images, oceanic soundscapes, and you may enchanting bonus possess that produce the twist feel like a keen marine excitement. Simultaneously, you could subscribe its VIP Plan, enter its slot competitions, and you can discover incentives and you may benefits too.<\/p>\n

The sea Richies slot was a treasure-trove off fun and advantages, and you would not must miss out on the action. Which have totally free revolves, multipliers, and you may wilds galore, it slot keeps you addicted such a fish to the good range. Area of the icons include an excellent dolphin, a seahorse, good crab, a great starfish, not forgetting, a great mermaid.<\/p>\n","protected":false},"excerpt":{"rendered":"

Successful banking ensures that slots join incentive profits already are accessible That have an enthusiastic RTP of % and you can reasonable volatility, this video game also offers constant gameplay with constant victories. At the same time, the fresh new Scatter symbol \ufffd the fresh Appreciate Boobs \ufffd trigger the\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-115260","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115260","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=115260"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115260\/revisions"}],"predecessor-version":[{"id":115295,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/115260\/revisions\/115295"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=115260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=115260"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=115260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}