/* 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":95490,"date":"2026-05-24T01:12:16","date_gmt":"2026-05-24T01:12:16","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=95490"},"modified":"2026-05-24T01:12:18","modified_gmt":"2026-05-24T01:12:18","slug":"enjoy-31000-totally-free-harbors-games-no-deposit-zero-obtain","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/enjoy-31000-totally-free-harbors-games-no-deposit-zero-obtain\/","title":{"rendered":"Enjoy 31,000+ Totally free Harbors & Games No-deposit Zero Obtain"},"content":{"rendered":"

Go to SAMHSA\u2019s Federal Helpline web site to own info that come with a medication cardiovascular system locator, anonymous cam, and a lot more. Or do you enjoy the most basic enjoys, for example gamble or instantaneous honors, and therefore miss at random regardless of their success? Is it possible you prefer providing current rewards since you advances through the video game? For once, landing cuatro hammers once more, you\u2019ll feel redirected towards the last level having multiplier values off 50x – 100x. Since you improvements further, you\u2019ll found a great deal more boosts and you can income. 25,000X limit earn\/Unique build and you will exciting motif\/Loads of enjoys, also incentive cycles and you can increasing grid.<\/p>\n

But if you\u2019lso are not necessary so you can put in order to claim the deal, it\u2019s still really worth saying free revolves, whatever the playthrough. Yet not, winnings towards free spins should be paid just like the bonus currency, that’s connected with wagering standards. Totally free revolves is a variety of totally free extra, offering lowest-risk gaming on the harbors that will pay out a lot of money, therefore the more enjoy function viewing way more slots for cheap out-of your own currency. Definitely take a look at and discover how much time your own free revolves last so you’re able to mitigate the chance of log in merely to find them ended and you will removed from your account before you could\u2019ve had a way to use them.<\/p>\n

This integrated comparing and you will guaranteeing Crazy Time super bonus<\/a> simply high quality feedback and you can articles was basically put in the website. It is possible to prefer to merely wager enjoyable and never care about the fresh new profits at all. To locate people added bonus rules free of charge spins or any other has the benefit of, you have access to the selection of needed 2017 casino web sites.<\/p>\n

Make sure to listed below are some the necessary casinos on the internet into the current condition. Sure, of several 100 percent free harbors tend to be extra video game the place you would-be ready to dish upwards several free revolves or other honours. With the exact same graphics and added bonus possess while the real cash video game, free online harbors would be just as pleasing and engaging for professionals. Always check the brand new gambling establishment\u2019s standards to learn how to withdraw your profits. From the the leading web based casinos, this new thrill never ever concludes\u2014your upcoming prize is just a chance away!<\/p>\n

Zeus is actually developed by WMS, it is therefore a rareness about this listing. Zeus try a real money online slot giving people this new craziest bonus series. Because it’s a vibrant games, online casinos for example Fantastic Nugget bring 88 Fortunes totally free spins as a part of the enjoy bundle. It checklist is targeted on playability and you can payment design not just prominence.<\/p>\n

It\u2019s working on a lot of time-depending, registered web based casinos one to help In control Playing options for their clients. These headings was a top-high quality release having an interesting motif, framework, featuring. Countless brand new studio’s online game become this one.<\/p>\n

In addition, there are many than 15 position video game into the thumb that feature bonus series. Ideal was chose and placed in the variety of an informed the fresh new gambling enterprise websites. That\u2019s the reason we\u2019ve composed a giant room out-of slots inside our on the web casino, thus you are able to favor and you may choose for the favourites.<\/p>\n

Additionally, web based casinos and several developers provide totally free ports playing prior to deposit with real cash. Incremental free spins are the ones revolves that will be providing so you’re able to members just like the rewards. Some other method for spins shipment is number-founded totally free spins which can be the individuals on offer at most all of the online casinos. The latest 100 percent free spin advertising given by casinos on the internet are certainly the most famous that have users. You’ll find usually the new added bonus games getting created to own on the web position online game.<\/p>\n

One of the major advantages away from 100 percent free harbors would be the fact indeed there are many themes available. This new casino flooring isn\u2019t merely his office, it\u2019s a weird and you can great ecosystem out-of blinking lights, nuts emails, and you can pure nerve overburden, and he wouldn\u2019t obtain it another way. We sensed numerous situations whenever producing all of our list of one’s top ports with free revolves. For each video game includes other multipliers and features, and that means you\u2019ll must decide which online game is right for you top. After you end in a free of charge revolves bullet, you might select from Superstar Bar free revolves, Lava Lair free revolves, Lucky Glass totally free revolves, and Golden Pot totally free spins.<\/p>\n

Yet not, if you’re looking to possess a bit ideal graphics and you will a slicker gameplay experience, i encourage getting your preferred online casino’s software, if the available. For those who visit one of our necessary web based casinos right today, you could be playing 100 percent free slots within a few minutes. When trying out totally free slots, you can even feel it\u2019s time for you move on to real cash play, but what\u2019s the real difference? Used in most slot game, multipliers increases good player’s earnings by the as much as 100x the fresh modern count. This particular feature the most preferred rewards to track down in online slots.<\/p>\n

This will help to you learn the technicians and you will added bonus has. Look at the cashier, get a hold of withdrawal, favor a method (bank transfer, e-wallet, or card), go into the number, and you will establish. Some campaigns tend to be 100 percent free revolves with the prominent ports. Particularly, we shelter the fresh doors regarding olympus video game, as well as its extra provides and you may RTP. Unless certain web based casinos consult it, you don\u2019t you would like an oz slots application playing it.<\/p>\n

Aside from totally free revolves benefits, some other fascinating bonuses watch for after you was our very own recommended casinos. So you can find a very good totally free revolves extra to you personally, we have amassed a summary of the best of these. On the other hand, you can also find her or him because cashback perks after you reduce currency. Deposit 100 percent free revolves bonuses was gambling establishment benefits which need members to create a tiny put just before they may be able claim him or her.<\/p>\n

Wilds try signs that you\u2019ll see in most brand new online slots games, because they are the fresh new icons professionals usually love the most. A great multiple-level bonus game try a casino game in which you need over specific task otherwise complications, while you do, you\u2019ll move to the next level. Possibly this feature is provided since the an advantage, however, commonly you\u2019ll have to pay extra to hang new reels, while the price is correlated into the winning prospective.<\/p>\n

In a lot of free local casino ports with extra series of this type, simply unique icons show up on the fresh matrix with this bullet. At the end of this set of chief incentive features, we have the Hold n’ Spin element. With respect to the free slot games which have incentive series you have chosen, new honours normally vary from cash benefits and you can multipliers so you’re able to 100 percent free spins and jackpots.<\/p>\n","protected":false},"excerpt":{"rendered":"

Go to SAMHSA\u2019s Federal Helpline web site to own info that come with a medication cardiovascular system locator, anonymous cam, and a lot more. Or do you enjoy the most basic enjoys, for example gamble or instantaneous honors, and therefore miss at random regardless of their success? Is it possible\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-95490","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95490","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=95490"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95490\/revisions"}],"predecessor-version":[{"id":95491,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95490\/revisions\/95491"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=95490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=95490"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=95490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}