/* 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":95812,"date":"2026-05-24T02:47:10","date_gmt":"2026-05-24T02:47:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=95812"},"modified":"2026-05-24T02:47:12","modified_gmt":"2026-05-24T02:47:12","slug":"assist-we-regret-to-inform-you-that-the-ip-provides-been-blocked","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/assist-we-regret-to-inform-you-that-the-ip-provides-been-blocked\/","title":{"rendered":"Assist We regret to inform you that the Ip provides been blocked"},"content":{"rendered":"

As the an industry professional having Local casino.org, he’s a portion of the class you to lso are-evaluation bonuses. He spends his big expertise in the to make blogs across the key around the world places. You will be sure you to definitely 100 percent free revolves are entirely legitimate once you play during the among the many online casinos we\u2019ve required.<\/p>\n

Well-identified titles are the Steeped Wilde collection comprising over 15 video game and spearheaded of the Publication out of Dead, therefore the Reactoonz franchise. While happy to begin to relax and play harbors for money, you could kickstart the experience by the grabbing the fresh new free spins bonuses, which give you extra revolves together with your earliest put during the better United kingdom casinos. Next, I need to choose the right wager number each twist, and so i know the way I wish to explore my personal money when my personal currency\u2019s at stake. Prior to entering, you might have fun with the seemed ports free-of-charge to find out if you to definitely shines because of its struck price, or the size of its profits if you\u2019d choose to try and earn extra products having larger wins.<\/p>\n

Brand new users in our Nords Casino<\/a> website can choose to tackle free gaming game which have withstood the test of your energy along with brand new launches having the newest and you will fun keeps. Your shouldn\u2019t put your landscapes on one betting position up until they gives you a giant commission. This means, people will lose the bet, if you find yourself that happy kid commonly break the bank. Before you choice any a real income while playing movies slots, you ought to simply take lots of points into account. At this time, developers make an effort to do online casino games with a high-top quality sound, eye-popping graphics, well-produced plots and emails, and very enticing bonuses.<\/p>\n

To experience it feels like enjoying a film, and it\u2019s difficult to ideal the latest excitement out-of watching all these bonus features illuminate. Developers checklist an enthusiastic RTP each position, nonetheless it\u2019s never accurate, so all of our testers song payouts through the years to ensure your\u2019re also getting a reasonable offer. \u201dNot just has we composed video game which have a proven achievements number certainly one of players, but we\u2019ve delivered a whole new style to help you on line gambling.\u201d There\u2019s just a bit of a learning curve, but once you have made the concept from it, you\u2019ll love all of the more chances to profit the newest slot provides. Our team enjoys come up with a knowledgeable type of step-manufactured free slot game you\u2019ll find anyplace, and you may gamble these right here, totally free, and no adverts whatsoever.<\/p>\n

Casino poker shall be a premier-chance, high-prize games, it\u2019s not recommended to possess inexperienced bettors. Free blackjack is available in several differences possesses a decreased family edge of any games. In the place of harbors and you will roulette, black-jack offers players a component of handle. He or she is entirely opportunity-depending online game, which makes them universally obtainable and tons of fun. Regarding the after the top ten harbors list we are going to direct you in which and the ways to availability the major harbors and you can table online game open to participants around the world. If you\u2019re looking for the top 100 percent free online casino games, you\u2019ve started to the right spot.<\/p>\n

Forehead of Games is a site offering free casino games, for example slots, roulette, or blackjack, which is often played for fun during the trial means without investing hardly any money. In fact, it\u2019s a great way to habit limitations too, and that means you ensure that it it is manageable once you wager real. After all \u2013 minimal spins, availability immediately following most needs, otherwise those mundane advertising all the 15 mere seconds. Whether it\u2019s representative-amicable, there\u2019s a search pub, and video game load prompt \u2013 it\u2019s most probably worthwhile.<\/p>\n

Plus, there\u2019s lots of 100 percent free spins to understand more about. Friends, there\u2019s no chance you haven\u2019t heard of this option. Anticipate numerous incentive series.<\/p>\n

You can see how frequently a position will pay out as well as incentive series trigger, preview what to anticipate when unique symbols residential property, and look in the event your total motif, picture and you may gameplay suit your concept. \u2022 Chinese \u2013 Our very own Chinese-inspired ports transport one to china and taiwan, the place you\u2019ll get a hold of a secure off heritage and you can options. Having plenty to pick from, we understand your\u2019ll discover your dream fairy-tale thrill.<\/p>\n

We recommend form strict restrictions and you can sticking with them, plus utilizing the tools one Us casinos on the internet bring to keep your gamble within this those constraints. The mix of themed bonus series, increasing reels, and you can jackpot-linked mechanics has actually aided support the operation facing players for many years. New studio is actually widely acknowledged because of its large-production thinking, strong labeled profiles, and you may varied articles slate one to spans antique dining table video game, progressive jackpots, and show-steeped movies harbors. Using its bright images, rhythmic soundtrack, and incentive rounds which contain respins and you will symbol-securing auto mechanics, the online game provides both style and have breadth.<\/p>\n

It\u2019s unusual to track down people totally free position online game that have bonus have however could get a ‘HOLD’ or ‘Nudge’ key that makes it simpler to setting profitable combinations. Continue reading to find out more throughout the online harbors, otherwise search doing the top of these pages to determine a casino game and start to play today. A deck designed to program all of our jobs intended for bringing the attention off a safer and more transparent gambling on line community so you’re able to facts.<\/p>\n

Ports templates are much particularly flick genres in this the emails, setting, and you can animated graphics are derived from the latest theme, however the construction is more or smaller a comparable. The ports gamble will be based upon haphazard luck for area, to ensure that\u2019s of the same quality a means since the one to determine a new games to use. Of many harbors members like another type of online game as they such as the look of they at first sight. You\u2019ll often place new coin really worth, payline really worth, otherwise overall wager. This may are different some time with regards to the slot, nonetheless it\u2019s never assume all you to difficult.<\/p>\n

Templates dictate the air and you may iconography of a game, if in case to relax and play free-of-charge, users gain access to an entire variety. Whenever playing slots online, more participants has actually additional preferences about your motif. One of the best reasons for having Starburst is the fact that it\u2019s appropriate for unnecessary totally free twist bonuses!<\/p>\n

Only choose everything including and you can plunge to the fascinating world of slots! Or you\u2019re also keen on inspired selections and you will famous games series? You could potentially deposit having fun with credit cards such as Visa and you may Mastercard, cord transmits, inspections, plus bitcoin. This will be to be certain your current feel is simple, simple and you may productive as you play slots on the web for real money! Users get access to on-line casino slots and you will game with the 100 percent free Slots regarding Las vegas Desktop computer software, Mac website, and you can mobile gambling enterprise, which has been formatted having incredible game play in your pill, Android os mobile otherwise iphone.<\/p>\n

Must put most thrill for the position coaching? You could potentially spin the fresh new reels, discover extra series, and you can assemble benefits with just a number of taps. It\u2019s just the right space to check on variations, talk about incentive cycles, and you will twist for just the fun of it. Since game play ranging from totally free and you will real money slots is close to the same, the action and goals are more.<\/p>\n","protected":false},"excerpt":{"rendered":"

As the an industry professional having Local casino.org, he’s a portion of the class you to lso are-evaluation bonuses. He spends his big expertise in the to make blogs across the key around the world places. You will be sure you to definitely 100 percent free revolves are entirely legitimate\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-95812","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95812","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=95812"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95812\/revisions"}],"predecessor-version":[{"id":95813,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95812\/revisions\/95813"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=95812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=95812"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=95812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}