/* 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":111111,"date":"2026-05-25T11:55:36","date_gmt":"2026-05-25T11:55:36","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=111111"},"modified":"2026-05-25T11:55:36","modified_gmt":"2026-05-25T11:55:36","slug":"the-main-benefit-has-inside-majestic-mermaid-game-make-position-actually-much-more-fun","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/the-main-benefit-has-inside-majestic-mermaid-game-make-position-actually-much-more-fun\/","title":{"rendered":"The main benefit has inside Majestic Mermaid game make position actually much more fun"},"content":{"rendered":"

Efficient banking implies that ports sign-up added bonus profits happen to be accessible<\/h2>\n

Having an enthusiastic RTP regarding % and you may lower volatility, so it games offers constant gameplay having repeated wins. While doing so, the latest Spread out icon \ufffd the brand new Treasure Chest \ufffd triggers the newest game’s special added bonus have.<\/p>\n

If you want highest advantages, come across deposit-dependent allowed incentive ports that have obvious criteria. For every ports register bonus offers another type of feel, and also the genuine well worth arises Slotoro<\/a> from exactly how easily you can transfer they to your withdrawable profits. Fast and you can reputable withdrawals make sure earnings out of 100 % free revolves towards sign-up might be utilized immediately. A well-prepared ports welcome render lets professionals to understand more about far more online game and stretch gameplay instead of additional expense. A knowledgeable free spins indication-right up business are those that enable players to understand more about online casino games online instead unnecessary limitations.<\/p>\n

Minimal is one and limit try 100 thus there is certainly lots of option for each other lower and highest betters. There are also the brand new 100 % free revolves which you yourself can win if the your fits about about three of icons; there can be ranging from you to and you will ten totally free converts would love to become advertised. The fresh crazy symbol gives you a big honor regarding 2,000 for many who twist four but there is however zero commission getting coordinating 3 or 4.<\/p>\n

Searching to understand more about Mystical Unicorn for the an online gambling enterprise instead of affecting their bag? Mysterious Unicorn position off WMS try boasting a superb Return to Pro (RTP) away from 96.0% and you may offering the opportunity to safer maximum wins as much as x520. Whenever about three or maybe more Spread symbols come, you’ll end in re also-revolves one to increase your odds of getting larger gains. The latest Wild Mermaid symbol support means successful combos of the replacing to possess other signs, because the Scatter icon activates the bonus has for even much more possibilities. For the Lock & Stream ability, your assemble Prize icons, that provide cash rewards centered on your own bet proportions. The advantage online game inside the Majestic Mermaid position was created to continue participants involved and offer even more ventures to own gains.<\/p>\n

The new mysterious allure of mermaids-half-individual, half-seafood beings with supernatural efforts-creates just the right background to have an enthusiastic immersive playing experience where something seems you can. Yet not, inspite of the fun graphics discover hardly any extra have otherwise bonuses plus the play is fairly effortless. Winnings Huge with Mystic Ports right from your house for free!<\/p>\n

So you can hit a fantastic move, we’ve included headings such as Betting Arts’ Pinatas Ole\ufffd, AGS’s Rakin’ Bacon\ufffd, Lightning Box’s 100x RA\ufffd, and you can Aruze’s Dance Panda Luck\ufffd. The best part regarding entire bullet is the fact every victories feature a two times multiplier which makes a distinction in the event your gamer decided to wager a dramatically lot of profits. The gamer may as much as 40 100 % free spins if he try lucky enough to discover the added bonus series brought about and retriggered.<\/p>\n

When you find yourself a lover of fantasy Las vegas ports, your research stops right here. Offering four form of 100 % free spins and a good mermaid thrill to help you stay searching for Las vegas harbors treasures. Progressive free ports pack the same punch since real-money designs, including nuts symbols, spread out will pay, and you will entertaining incentive rounds.<\/p>\n

You can easily quickly see hence games suit your to try out design and you may and this bonus series provide the better potential for huge gains. So it underwater adventure are certain to get your swimming towards fishes (from the best way you can) and looking sunken treasure. And you may speaking of payouts, Mermaid Charm Position offers a lot of possibilities to rating big that have its added bonus possess. One to real time fits awaits you daily-take over the latest mountain, collect chips for the career, and open exclusive benefits.<\/p>\n

The greatest destination of video game try their free spins feature which have Insane Multipliers boosting your victories by around 5x. It uses 5 reels and you can 30 paylines and features major icons illustrated by yellow-haired enchanting mermaid, dolphins with fantastic decoration, golden necklaces, jars filled up with fantastic gold coins and you will shells that have starfish. Ready to need an intense plunge of many leagues according to the ocean to look for Mermaid’s Gold? Towards possibility extreme gains and an intuitive build, the overall game has the benefit of a mix of thrill and you may activity that’s sure to amuse participants. Players can be mention the video game which have free Strange Chance films ports, while you are real cash gamble initiate just 0.20 for each twist, on the substitute for choice around for big spenders seeking large pleasure.<\/p>\n

All the wins inside the added bonus round are put into the remaining quantity of loans through to the incentive video game has started. Having 20 repaired paylines and you can a gamble list of 0.20 so you can 100, Mermaid’s Winnings & Spin serves most of the explorer-off mindful swimmers so you can strong-ocean big spenders. Elegant whales, charming turtles, wonderful crowns, and you can gleaming starfish spin along the display screen since calm voice of your sea courses the excitement. Dive to the a slots fantasy which have Mermaid’s Earn & Spin\ufffd and you may go on a vibrant underwater harbors adventure, in which huge wins watch for under the game’s amazingly-clear waves! The main benefit cycles was in addition to this for the one-fourth and you can buck denomination ???? Higher return!! Within the extra, all of the wins was doubled!<\/p>\n

See traditional position mechanics with modern twists and you can fun added bonus cycles<\/h2>\n

The newest slot offers zero high-risk games where you could attempt to improve commission and no added bonus cycles which have a multiplier. I’ve found myself carrying my inhale inside added bonus rounds in hopes to see you retrigger. Such bonuses besides improve your winnings but also add an fun measurement away from variability to your games, ensuring you might be constantly on the side of their seat. Because you dive into the unique cycles, there will be a realm of wilds, scatters, and book signs one to increase odds of achievement. The fresh new charm of Strange Unicorn goes beyond the simple game play; its added bonus features it is take the fresh new spotlight.<\/p>\n

These types of intimate games blend shimmering artwork, oceanic soundscapes, and enchanting bonus possess that make every spin feel like an enthusiastic marine excitement. Simultaneously, you can even register the VIP Bundle, enter into its slot competitions, and you may found bonuses and you can perks as well.<\/p>\n

The ocean Richies slot was a treasure-trove off fun and you will benefits, therefore wouldn’t should overlook the action. Having free spins, multipliers, and you will wilds galore, this position keeps you addicted such a seafood on the an excellent line. An element of the signs were an effective dolphin, an effective seahorse, a great crab, a great starfish, and additionally, a great mermaid.<\/p>\n","protected":false},"excerpt":{"rendered":"

Efficient banking implies that ports sign-up added bonus profits happen to be accessible Having an enthusiastic RTP regarding % and you may lower volatility, so it games offers constant gameplay having repeated wins. While doing so, the latest Spread out icon \ufffd the brand new Treasure Chest \ufffd triggers 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-111111","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111111","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=111111"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111111\/revisions"}],"predecessor-version":[{"id":111116,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/111111\/revisions\/111116"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=111111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=111111"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=111111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}