/* 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":103382,"date":"2026-05-25T11:37:54","date_gmt":"2026-05-25T11:37:54","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=103382"},"modified":"2026-05-25T11:37:55","modified_gmt":"2026-05-25T11:37:55","slug":"invest-rubies-to-have-quick-benefits-or-wait-until-timekeeper-ends-so-youre-able-to-understand-the-exciting-honors","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/invest-rubies-to-have-quick-benefits-or-wait-until-timekeeper-ends-so-youre-able-to-understand-the-exciting-honors\/","title":{"rendered":"Invest rubies to have quick benefits or wait until timekeeper ends so you’re able to understand the exciting honors!"},"content":{"rendered":"

If you’re looking for a safe and you can safer location to enjoy harbors which have bonus game, after that your look is now commercially over. Inside Reactoonz 2 you will need to gather categories of icons and you may charge up the latest Fluctometer and you may Quantumeter in order to unleash some impressive extra series. All of us regarding gambling enterprise advantages was hard where you work, searching for the greatest slots having incentive cycles which you could play immediately.<\/p>\n

Pearly Prizes is actually an advantage game in which users need to twist to gather pearls, & winnings incredible benefits! Exclusive surprises and incentives off Gold fish Casino Harbors place this video game apart and never cease to help you shock people.<\/p>\n

To have professionals exactly who favor straight-upwards spins instead of loads of front side auto mechanics, this can be a win. To help you cause the fresh totally free spins extra, you will need to property three Gong symbols to your reels 2, twenty-three, and 4. The main benefit online game from the 88 Luck on the web slot is the place something warm up – but you need to secure your way inside. Multiply that by number you happen to be betting to figure out how much for each twist try charging you.<\/p>\n

Jackpots, improvements maps, gluey wilds, and multipliers are merely some of the mindblowing incentives you’ll get in our ines. Spin the newest reels, have the excitement, and you may find out awesome rewards BC.Game<\/a> wishing for you personally! Be it antique slots, online pokies, or even the most recent moves off Las vegas – Gambino Slots is the place to relax and play and you can earn. During the Gambino Harbors, there are a sensational arena of 100 % free slot games, in which anyone can find its best games. Possess exciting hurry regarding winning larger – it\ufffds totally free, with no down load otherwise purchase necessary. If or not you prefer Antique Harbors, Modern Ports, 777 Ports, otherwise Films Harbors, you are in to have anything pleasing.<\/p>\n

It is simple to claim free spins incentives at most online casinos<\/h2>\n

As a result, you will need to make use of ports bonuss 5 times before you can can be withdraw any cash on the casino. Really online casinos will give a pleasant added bonus you can get when you sign up. There are many different a means to claim harbors bonuses at the ideal online casinos. I’ve spent decades investigations casinos on the internet and you may offers, when We opinion a slot incentive, We search outside of the headline amounts. Developed by Playtech, Buffalo Blitz II gallops not in the victory of the ancestor with improved illustrations or photos and changed auto mechanics.<\/p>\n

Arbitrary features that boost reels during the game play, such as incorporating wilds, multipliers, otherwise converting icons. These Put suspense and treat, because mystery icons can cause unforeseen and you may generous earnings.<\/p>\n

For individuals who victory from the free gambling establishment spins, you are getting a real income instead of added bonus borrowing. Always, he or she is considering while the totally free revolves for the register during the the fresh new web based casinos and will otherwise may not incorporate playthrough requirements. 100 % free spins no-deposit is the best form of give inside our checklist, because they do not require you to deposit all of your very own money in advance of saying all of them.<\/p>\n

In the event that there are unnecessary repeat grievances which establishes our security bells supposed. I take a look at social media programs and you may players’ message boards such Reddit to own a feeling consider. You need to be able to utilize the bonus money on the new almost all ports, with the exception of jackpots and several most other higher-commission titles. Should your website now offers cryptocurrencies, then it is delivering a better get of you. For direction, the big casinos on the internet scarcely go less than $250 in terms of a casino desired added bonus.<\/p>\n

Doing offers in the demonstration means makes it possible to pick your upcoming favourite extra cycles enjoys. If you have nevertheless got a losing matter or a couple whether it involves incentive enjoys during the slot online game, upcoming fear perhaps not. Clearly, added bonus cycles for the slots will come in lots of sizes and shapes, adding a little thrill to your local casino betting, irrespective of where he could be discover! Any it lands on the are your to enjoy towards cycle of the 100 % free spins bonus bullet. Go out into the old Wild West looking some advantages on punctual capturing Deadwood off Nolimit Area. The 2?2 dimensions Energoons or even the gigantic twenty three?3 Gargantoon can bring sizable rewards right here, thus get active that have those people little giants.<\/p>\n

All of our ports is completely liberated to enjoy, and regular incentives suggest of numerous won’t need to better-up with even more coins. All of our harbors are designed which have credibility at heart, so you can easily end up being most of the adventure of a bona fide money online local casino. However, why you need to annoy rotating the headings? Set out to your an activity-manufactured adventure, where you are able to become nicely rewarded which have grand benefits-troves off dear coins.<\/p>\n

Icons one bring bucks values, will collected during the added bonus have otherwise totally free revolves for quick honours<\/h2>\n

Entertaining picture, interactive game play, and chance to proliferate earnings thanks to multipliers or gather benefits inside the totally free spins was facts you to sign up for the grade of a plus bullet. Such bonuses can come in numerous variations, such as free revolves, mini-games, multipliers, and you may entertaining provides, incorporating thrill and you will potential advantages on the game play. A good game’s extra round can be considerably influence the overall excitement and you may possible rewards off an online position. The fresh new technicians for triggering these features may vary from 1 position to a different, causing the fresh new range and you can excitement from on the internet position gameplay.<\/p>\n

Just proceed with the steps less than and you will be rotating away having free within greatest slots in no time anyway… The fresh wagering need for this bonus try 35x, very you’ll have to choice the profits 35x just before capable be taken.Very, you really need to build wagers totalling a worth of kr525 (fifteen x thirty five) before you could withdraw. Free spins is frequently familiar with reference advertising regarding a great gambling enterprise, if you are added bonus spins is normally familiar with reference added bonus cycles away from 100 % free spins within personal position games. Free spins come in of many sizes and shapes, so it is essential understand what to find when choosing a free of charge revolves extra.<\/p>\n

It make use of unique gaming methods that allow players so you’re able to modify its gameplay feel. Push Gambling integrates visually hitting image with inventive gameplay technicians. Their highest-volatility harbors are capable of excitement-hunters which take pleasure in higher-exposure, high-reward gameplay. Whether you are a seasoned user seeking to discuss the fresh titles or an amateur eager to find out the ropes, Slotspod has got the prime system to compliment your own gambling travels. It simulate the full possibilities regarding genuine-money slots, letting you take advantage of the thrill from rotating the fresh reels and you will triggering extra have without risk towards handbag.<\/p>\n","protected":false},"excerpt":{"rendered":"

If you’re looking for a safe and you can safer location to enjoy harbors which have bonus game, after that your look is now commercially over. Inside Reactoonz 2 you will need to gather categories of icons and you may charge up the latest Fluctometer and you may Quantumeter in\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-103382","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/103382","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=103382"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/103382\/revisions"}],"predecessor-version":[{"id":103384,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/103382\/revisions\/103384"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=103382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=103382"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=103382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}