/* 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":32538,"date":"2026-05-17T19:01:05","date_gmt":"2026-05-17T19:01:05","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=32538"},"modified":"2026-05-17T19:01:07","modified_gmt":"2026-05-17T19:01:07","slug":"online-slots-games-100-percent-free-revolves-no-deposit-called-for","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/online-slots-games-100-percent-free-revolves-no-deposit-called-for\/","title":{"rendered":"Online slots games 100 percent free Revolves No deposit Called for"},"content":{"rendered":"

Crazy icons enjoy a button role right here, proceed the link now<\/a> providing offer streaks and you will increase earnings once the cascades keep. For those who\u2019re also being unsure of which 100 percent free position to try, i have faithful pages for the majority popular sort of online slots. First of all, every position demonstration you\u2019ll select on this page are an effective \u201c100 percent free position.\u201d Even if they\u2019s made by a real-money position journalist, including Light & Ask yourself or IGT. That\u2019s sufficient getting 2 hundred+ spins at minimum bet, providing you with more than enough room to explore headings such as for instance Elvis Frog TrueWays, Snoop Dogg Cash, and Bonsai Dragon Blitz before expenses a cent.<\/p>\n

Normally, real money online casinos require apps becoming installed manageable playing. Which creates an unprecedented quantity of usage of and you will convenience having players. To have participants, all you need to perform was load the game upwards whether or not you\u2019re also towards cellular net or keeps downloaded an app, as well as the position is to scale toward cellular screen and start to become working.<\/p>\n

With each spin, you might tray right up signs to make Free Revolves truly, otherwise unlock added bonus enjoys you to definitely award extra revolves. Gambino Slots possess a totally free and you will enjoyable on the web Totally free Revolves gameplay that renders us one of many greatest online slots gambling enterprises. If you\u2019re to try out vintage harbors, you usually won\u2019t convey more than one type of bullet.<\/p>\n

It indicates he or she is enhanced to possess mobiles, therefore you should be able to gamble them without any issues on the new iphone, Android mobile, apple ipad, and other progressive portable or tablet. To tackle online, you come across various other bells and whistles and you can graphics scarcely contained in brick-and-mortar spots. If that is your own case, maybe you can make use of no deposit gambling enterprise incentives, that leave you a chance to profit some cash instead of needing to spend all of your own. The best thing to complete should be to visit the list regarding top ports internet sites and choose among most readily useful solutions. Having said that, the selection of genuine-money gambling enterprises online might or might not feel a little restricted according to your area.<\/p>\n

Video slots make reference to progressive online slots with video game-eg photos, music, and you will picture. Don\u2019t skip, you can check out all of our gambling enterprise ratings for many who\u2019lso are wanting totally free casinos to help you down load. Particular free position video game features incentive has and you will bonus series when you look at the the type of special icons and side video game.<\/p>\n

Delivering all the readily available house into the panel turns on Tycoon Spins, which have additional incentives. Even though the bonus rounds in most video game use the form of a controls, that\u2019s a single types of of numerous found in our game. For example means for symbols to take more than all over spins, plus unique cycles and bonuses. If your\u2019re leisurely in the home or while on the move, you can always delight in your preferred slot online game. You\u2019ll get Totally free Revolves and you will Grams-coins to begin with, and you may earn more because of the to tackle our very own online game.<\/p>\n

I check out the quality of brand new graphics when making the selection, making it possible to feel it’s immersed in almost any online game your enjoy. Tomb raiders tend to discover many appreciate within Egyptian-inspired title, and that includes 5 reels, 10 paylines, and you may hieroglyphic-style graphics. However, it\u2019s generally thought to get one of the best selections out-of bonuses of them all, which is why it\u2019s nonetheless very common 15 years after its launch.<\/p>\n

The 50,100000 gold coins jackpot isn\u2019t distant for many who start obtaining wilds, hence lock and you may expand all in all reel, increasing your earnings. A beneficial Mayan feast that have great picture and a prospective 37,five hundred limitation win makes Gonzo\u2019s Journey well-known for more than ten years. Bonanza Megaways is even adored because of its responses ability, in which winning signs disappear and supply a lot more chances to have a totally free winnings. Finest 100 percent free slot game today have some buttons and features, such twist, bet membership, paylines, and you can autoplay. Thus, if or not you\u2019lso are toward antique fruits machines otherwise reducing-boundary films slots, enjoy our totally free games to discover the brand new headings that fit the preference. All you need is a reputable browser one to supporting modern websites innovation.<\/p>\n

For me personally, it\u2019s in the layouts one to mouse click, gameplay you to have me involved, and you can a sentimental otherwise fun factor that renders myself need certainly to strike \u201cspin\u201d over repeatedly. A good come across when you need high-energy and you may escalating incentives. Of course the newest Super Cap kicks for the, you\u2019re considering multiple houses getting blown off all at once.<\/p>\n

Set date limitations, capture breaks on a regular basis, please remember that totally free online game is intended for enjoyment and can\u2019t expect the results of real money game. Even though trial harbors include zero economic risk, it\u2019s still crucial that you play sensibly. If you are searching to possess one thing certain, choose one of the ‘Game Theme’ choices.<\/p>\n

So it\u2019s really you to for fans of adventure. Group pays award wins as opposed to paylines. If you\u2019re also undecided and therefore free ports make an attempt basic, I\u2019ve built a list of my personal top ten personal favorite 100 percent free demonstration ports to be of assistance. Particular web based casinos even award regular members that have free revolves promos. Listed below are some the directories of the finest local casino bonuses on the web. Nonetheless, you\u2019re bound to score just a bit of a-thrill after you land a giant earn.<\/p>\n

The new profitable backdrop ones online game happens alive which have sound-effects, animated graphics, and you will graphics towards the monitor. Since the demand for local casino slots expanded, therefore did the necessity for kits one to considering besides payouts and also enjoyment. We need to enjoy free slots online to your a web page which have an excellent selection of game.<\/p>\n

At the VegasSlotsOnline, you could availability your favorite online harbors without download, as there are you should not render one private information otherwise financial info. Usually films slots features four or maybe more reels, plus increased amount of paylines. Enjoy function are good ‘double otherwise nothing’ online game, that provides professionals the opportunity to twice as much honor it obtained shortly after an absolute twist. Extra get selection within the ports allow you to purchase a bonus bullet and access immediately, in lieu of waiting right up until it is caused while playing. Some harbors allow you to trigger and you will deactivate paylines to regulate their wager<\/p>\n

Modern jackpots is actually honor swimming pools that grow with each choice placed, providing the possible opportunity to earn a large amount when triggered. Have fun with our very own strain to help you kinds because of the “Latest Launches” or look at our “The Online slots” part to obtain the most recent video game. In the event the being unsure of, read the RTP advice offered and you will make certain they which have certified offer.<\/p>\n","protected":false},"excerpt":{"rendered":"

Crazy icons enjoy a button role right here, proceed the link now providing offer streaks and you will increase earnings once the cascades keep. For those who\u2019re also being unsure of which 100 percent free position to try, i have faithful pages for the majority popular sort of online slots.\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-32538","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32538","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=32538"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32538\/revisions"}],"predecessor-version":[{"id":32539,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32538\/revisions\/32539"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=32538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=32538"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=32538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}