/* 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":131633,"date":"2026-05-25T17:26:30","date_gmt":"2026-05-25T17:26:30","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=131633"},"modified":"2026-05-25T17:26:32","modified_gmt":"2026-05-25T17:26:32","slug":"appeal-necessary-cloudflare-2","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/appeal-necessary-cloudflare-2\/","title":{"rendered":"Appeal Necessary! Cloudflare"},"content":{"rendered":"

The game try thrilling, the latest bonuses rewarding, together with possibility large victories is just a spin otherwise a card deal away. Then when you want assistance, all of our professional customer service team is merely a visit otherwise current email address aside, wanting to help you have the best possible sense. All of our safer fee choice and you will timely earnings be sure to normally comfortably deposit and you will withdraw their payouts having complete satisfaction.<\/p>\n

Sports betting supply generally seems to trust the location and you can system adaptation you supply in Manhattan Slots brand. CurrenciesUSD-centered cashier; crypto served (BTC, ETH, LTC, USDT, USDC, BNB) Keep well-known internet browser newest to view the new game has and maintain smooth gameplay across the all of the equipment. Only go to the gambling establishment web site, sign in your account, and click any online game to begin with playing instantly.<\/p>\n

The Ports Casino’s instant play platform provides accessibility an entire distinctive line of Microgaming and you may dos Because of the dos Gambling headings. This new mobile type tons exactly as easily since pc system, ensuring professionals will start gambling within a few minutes out of beginning the twin casino-appen<\/a> cellular internet browser. Players merely visit the All of the Harbors Gambling establishment webpages, log into the account, and start to try out immediately. The moment play system runs seamlessly across the major browsers, along with Chrome, Firefox, Safari, and you will Line. The new gambling enterprise are styled into girls casino player, both in picture, demonstration and you may advertising, ergo is no treat that over 80% of people regarding New york Ports is actually females.<\/p>\n

Because an elder Internet casino Examiner, I\u2019m invested in providing profiles create advised decisions from the where you can enjoy. My welfare will be based upon comparing programs getting openness, consumer experience and satisfaction, bonuses, fee methods, game equity, and you can options. Always adhere a resources; it creates the latest victories more pleasurable and you can keeps something stress-free. The latest casino is run because of the Deckmedia N.V., a group one possesses several aunt internet sites utilizing the same RTG program. The facts is actually a bit murky, never assume all tiers are totally transparent, but if you\u2019re also a consistent, you\u2019ll select extra value stacking right up.<\/p>\n

Fortunately, these sites bring numerous percentage tips one to be certain that virtually punctual withdrawals. Zero downloads otherwise installment are expected\u2014just browse the range and choose a casino game you like. Having loans on the casino membership, you\u2019re willing to discuss the online game collection. Don\u2019t overlook these also provides, but choose prudently\u2014always browse the words cautiously (particularly the wagering requirements) and check when the bonus requirements are needed to allege them. A nice invited package which have incentive finance and you may 100 percent free spins is also end up being a good improve to help you kickstart your gameplay.<\/p>\n

Including, even if you might only have the ability to explore a code shortly after, the fresh new casino could well apply a threshold to exactly how many totally free potato chips will likely be put-out with this code. While the game area is actually worth a call, especially if you’ve never been to New york Ports before, you should not skip the offers area both. Run on this new greatest RTG application platform, this new gambling enterprise always provides something new upwards their sleeve to fairly share to you as well. The game transform from time to time to be certain an effective variety of slots and you will new pressures. Our video game are totally receptive guaranteeing you really have a fantastic feel whichever position online game you decide on. You could potentially use the gambling establishment experience wherever you go, no matter whether your\u2019re also looking forward to an effective tram otherwise show or in-anywhere between group meetings.<\/p>\n

The brand new online game group boasts The fresh new Video game, Slots, Table Games, Video poker, Specialization Games, and Progressives. Brand new technical sites otherwise access is needed to do user pages to send adverts, or even track the user to your a webpage or all over several websites for the very same sale intentions. There are a number of safe, secure put and you will withdrawal steps available to loans otherwise withdraw payouts from your gambling establishment account. Only look at the local casino on the smart phone and so they having effortlessly keep up with the people. All their video game try examined toward a continuous basis from the a 3rd party to be sure the randomness and you can fairness of the games. You can examine them out ahead to select the dining table you favor, after that begin playing on the smart phone, otherwise Desktop.<\/p>\n

Some of the deposit tips you are able to to put loans in the membership become Paysafecard, easyEFT, Ecopayz, Skrill, Neteller, debit & credit cards. Your personal guidance and percentage info are always leftover safe and safe as the web site have industry-fundamental 128-bit SSL security. Security is very important to Manhattan Ports Casino and all of the fresh transactions or contacts are created making use of the safest strategies you are able to. The newest game are powered by an arbitrary Matter Creator (RNG) to make certain that the results of any single games bullet try fair and you can haphazard.<\/p>\n

Not all browsers deal with HTML5 online game just as, and that i\u2019ve learned that Chrome generally speaking really works better than anyone else to possess easy game play, about during my situation. In this post, We check what quick gambling enterprises have to give you, how to choose the right one, and more than significantly, why should you gamble at the that. This new gambling establishment enjoys a legitimate license on the Bodies off Curacao, making sure it\u2019s a reasonable and you may rut to play. New york Harbors Gambling enterprise was a safe and legitimate on-line casino brand name which was properly created in 2004 in fact it is operated from the Pub World Casinos.<\/p>\n

To alter to help you real cash play away from 100 percent free harbors prefer a great necessary local casino on the our very own web site, signup, deposit, and commence playing. For most casino slots game on the web they often follow a theme. If someone else gains the fresh new jackpot, the fresh prize resets to their brand new performing number. It indicates the fresh new game play is actually active, that have symbols multiplying across the reels to produce 1000s of suggests to winnings.<\/p>\n

Manhattan Slots Local casino knows so it and you may implies that their platform try completely optimised to have cell phones. At the same time, this new local casino\u2019s SSL security guarantees a secure and you may safe gaming environment, securing professionals\u2019 private and you can financial recommendations. From the Manhattan Ports Gambling establishment, such also offers shine which have reasonable matches and totally free plays customized to amp within the excitement from your first put. The top Fish Focus on Ports angling trip provides as much as ten totally free revolves and bouncing wilds, ideal for users exactly who appreciate nature-themed game play. Real time Gaming\u2019s lineup readily available right here comes with varied templates and technicians appropriate mobile play.<\/p>\n

We meticulously opinion and you may try sweepstakes and you may old-fashioned casinos and work out sure he or she is as well as reasonable to try out. After you gamble real money harbors, you have a chance to cash out your own victories. This type of retro games typically offer best opportunity for steady victories compared so you’re able to medium- otherwise higher-volatility slots such Mega Moolah. For those who\u2019re a new comer to harbors, I suggest you start with classic harbors. Branded slots depend on well-known video clips, Shows, games, or cartoons. Videos ports appear in many layouts and you will paylines.<\/p>\n","protected":false},"excerpt":{"rendered":"

The game try thrilling, the latest bonuses rewarding, together with possibility large victories is just a spin otherwise a card deal away. Then when you want assistance, all of our professional customer service team is merely a visit otherwise current email address aside, wanting to help you have the best\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-131633","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131633","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=131633"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131633\/revisions"}],"predecessor-version":[{"id":131634,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131633\/revisions\/131634"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=131633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=131633"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=131633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}