/* 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":131747,"date":"2026-05-25T17:30:31","date_gmt":"2026-05-25T17:30:31","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=131747"},"modified":"2026-05-25T17:30:32","modified_gmt":"2026-05-25T17:30:32","slug":"100-percent-free-cellular-harbors-victory-real-cash","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/100-percent-free-cellular-harbors-victory-real-cash\/","title":{"rendered":"100 percent free Cellular Harbors Victory Real cash"},"content":{"rendered":"

Sure, you could make each other dumps and distributions within casinos on the internet compliment of your cell phone. You might be able to claim a bonus straight from the newest put webpage, because of the either choosing into it or by the typing a bonus password. Generally speaking, you sign in, navigate to the extra element of your account, and you will allege the main benefit. Of a lot web based casinos will give you a no-deposit incentive that have totally free spins getting simply downloading its application. The main benefit are provided to your account, and you can log on and you will allege it out of your cellular along with from your own desktop. Most web based casinos provide the exact same bonuses whichever form of off equipment your\u2019re also to relax and play into the.<\/p>\n

Distributions undergo good twenty four-hours pending several months and arrived at age-wallets less than simply notes or financial transmits. Precise rates and limits may differ by the nation, so check always the fresh campaign web page ahead of deciding within the. Detailed with modern jackpots, labeled video ports, RNG dining tables and you can a tiny but growing type of real time dealer video game delivered by the Advancement. \u201cThis new browser-oriented strategy features some thing simple \u2014 you to safer Hyperlink, zero compatibility headaches.\u201d \u2014 Dean McHugh, Chief Editor, CasinoGamesPro.com<\/p>\n

And make costs out of your cellular crypto-handbag was smooth, 100 percent free, and https:\/\/betibet-casino-fi.fi\/<\/a> also timely. E-Purses PayPal, Neteller and Skrill all are feasible choice when designing deposits during the a British-joined gambling enterprises. Be sure to look at the cellular carriers\u2019 charges otherwise people restrictions placed on their put restrictions. The ability to shell out the right path which have very acclaimed and well-known fee methods makes your own playing coaching this much sweeter. Play Poker Alongside black-jack, web based poker is considered the most preferred cards game bought at casinos on the internet. Play Lottery The straightforward mechanics from lotto video game is paired by chances to victory lifetime-altering amounts of money.<\/p>\n

New merchant enjoys shared Nice Bonanza 2500, a renewed take on their classic candy\u2011themed position including explosive 2,500x multipliers and you may longer feature options Access it panel with wild multipliers, half a dozen incentive game options, as well as the opportunity to end up in Extremely Totally free Revolves Off gooey wilds to arbitrary reels, out-of spread bonuses so you can free game that lead to your substantial multipliers, the experience never hits a dead avoid.<\/p>\n

Vegas Wins try an attractive, well-tailored online mobile casino detailed with 800+ top-top quality games. Designed for Uk participants looking a beneficial homegrown sense, Great britain Casino have new amusement going with its easy to use in the-application sense. Just in case you require an old gambling enterprise end up being combined with modern enjoys, it\u2019s a top see. It\u2019s among the uncommon cellular gambling enterprises the place you never end up being like you\u2019re also holding out.\u201d Whether spinning new reels otherwise hitting the tables, the step feels simple and you can punctual.<\/p>\n

On top of that, i have a real time gambling enterprise and you can a group of professional live investors happy to supply you with the best on-line casino entertainment offered right now. I make you what so you’re able to select the correct bingo amusement. We all know regarding online casinos put a number of stress on online game and never a whole lot towards the provider.<\/p>\n

I come across verification of their utilization of the latest technology in order that professionals are safe and that its data is safer. I’ll merely seriously consider casino software whose games become the favourites, for example position game, jackpots, bingo, and you will desk video game roulette, web based poker, baccarat, and blackjack. However, a knowledgeable online casinos are always an excellent kick off point, thus We have put together a selection of exclusive cellular-suitable offers on how to make the most of. Slot steps believe the video game auto mechanics and features.<\/p>\n

The ensuing list only has a knowledgeable five mobile casinos into the the usa, ranked by our very own professional cluster. Think of whenever online casinos was in fact to have desktop profiles simply? Using an easy consolidation, Practical Enjoy\u2019s bingo allows web based casinos making use of devices they require to transmit a game title genuine on their brand, giving members yet another, new bingo knowledge of a common ecosystem.<\/p>\n

Yes, Donbet works under the relevant playing regulations and adheres to in control playing conditions getting British people. Our very own financial company ensures that Donbet boasts extremely punctual control performance as compared to business averages. We engineered Donbet in order to securely process a thorough sorts of modern, extremely reliable deposit and you can withdrawal procedures. Sooner, this new pure magnitude of one’s Donbet library assures unlimited occasions regarding high-top quality entertainment. Providing an exceptional entertainment sense need a remarkably varied gambling profile. If or not utilising biometric authentication or standard credentials, Donbet protects the sensitive and painful data that have armed forces-amounts security protocols.<\/p>\n

You get an advanced maximum earn and much more gambling alternatives during the Gates off Olympus a thousand, a Greek Myth-inspired game regarding Pragmatic Gamble. The brand new gameplay is sold with cuatro jackpots, FS, and a lot more. Another cellular local casino struck are slots to the incentive buy feature. Extremely users choose online slots with incentive series that provide totally free revolves and extra incentives. Today, you can enjoy on line cellular harbors for the more 31 types, and it also\u2019s your decision to decide a popular. Benefit from our very own enjoy bonus, lightning-quick winnings, our very own mega profile from video game and you will 24-hour customer support the about palm of your hand!<\/p>\n

The adventure begins with a room off substantial invited even offers. At that gambling establishment, incentives match the timely-play term. The procedure is punctual and you will highly successful. Typical monitoring and you can strict defense audits uphold the greatest globe conditions.<\/p>\n

I evaluate and you can renew the listings daily in order to rely toward particular, most recent knowledge \u2014 no guesswork, zero nonsense. The difference is that you enter the gambling establishment from app, while\u2019ll have to continuously upgrade the latest app to be sure you have the fresh adaptation. But not, if you would like play for real money, attempt to listed below are some all of our listing of an informed web based casinos and also make their deposit indeed there. While you are worried about your own cellular research, it\u2019s better to play Live Dealers from a safe wi-fi commitment. Yet not, for many who pick a separate local casino to experience having, you\u2019ll keeps an enter afresh, however, it entails you can claim a special welcome give.<\/p>\n

Sure, many web based casinos provide demo otherwise free enjoy methods for most of their online game. Here are the most commonly known inquiries members ask whenever choosing and you can to try out at the casinos on the internet. By using such cover information, you may enjoy web based casinos with certainty and you may assurance.<\/p>\n","protected":false},"excerpt":{"rendered":"

Sure, you could make each other dumps and distributions within casinos on the internet compliment of your cell phone. You might be able to claim a bonus straight from the newest put webpage, because of the either choosing into it or by the typing a bonus password. Generally speaking, you\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-131747","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131747","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=131747"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131747\/revisions"}],"predecessor-version":[{"id":131748,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/131747\/revisions\/131748"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=131747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=131747"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=131747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}