/* 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":132053,"date":"2026-05-25T18:38:17","date_gmt":"2026-05-25T18:38:17","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=132053"},"modified":"2026-05-25T18:38:19","modified_gmt":"2026-05-25T18:38:19","slug":"mobile-game","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/mobile-game\/","title":{"rendered":"Mobile Game"},"content":{"rendered":"

No-deposit bonuses, totally free revolves, and you may deposit bonuses are some of the most sough-after bonus sizes. Including Progression Gambling, Practical Gamble, Wazdan, Tom Horn, CT Interactive, Apollo Video game, BF Online game, Tech4Bet, BigWin Game, Reel Kingdom, E-playing, Synot Game. Based on the sample i’ve conducted, we have rated the client service of Apollo Video game Gambling establishment just like the average. We think customer care very important, as they can be beneficial if you are experiencing complications with registration at the Apollo Video game Casino, your bank account, distributions, or whatever else. Getting in touch with the new casino’s customer support is part of the comment processes, to ensure we know if people get access to a great quality provider.<\/p>\n

Display your own wins on the Pragmatic Enjoy ports, score other chance of winning with Local casino Guru! To check on the chance to the jackpots, merely check in on an on-line local casino having Apollo Game. Ever since then, the organization has expanded the focus so you’re able to each other on the internet and property-established markets, developing an ever-increasing profile away from online slots and other virtual videoslots casino<\/a> local casino video game when you find yourself continuing so you can cater to antique gambling enterprises. Apollo Video game try a Prague-founded innovator in the wide world of gambling games, providing new details and fun gameplay to help you people since the 2007. 18+ \u2022 The fresh new Members Only \u2022 Complete Terms and conditions apply \u2022 It bonus simply be paid for the player when the completing the reputation along with their personal data and you can triggering their cellular telephone matter \u2022 Incentive must be activated in advance of depositing \u2022 Free revolves simply getting provided following put extra provides become redeemed \u2022 Of numerous omitted video game, browse the terms cautiously.<\/p>\n

We create aspire to find them ability a respect rewards program in the future. New players was rewarded having a big added bonus to increase the money after they signup while making their very first around three deposits. Slots, progressive jackpots, table games, casino poker video game and some book \u2018specialty\u2019 headings are all right up for choosing.<\/p>\n

Sure, try the newest Apollo Heaps free position to check brand new game play and you may perhaps end up in a modern jackpot. Remember, you’ll be able to appreciate different AGS demonstration harbors of the fresh provided number lower than. The engaging gameplay more than is the reason for artwork flaws. Get to the slight jackpot by turning reels one, two, and you will about three gold, and you will support the grand jackpot by turning every reels from one to help you five silver.<\/p>\n

not, its lack of a VIP system consists to have with a beneficial sort of most other incentives and you may a no-deposit incentive where you can rating R300 to try out at no cost. Email address customer support is a good option for many who\u2019re also okay to wait to own day for a response. Should you decide still need after that let, you can reach out to customer support thru current email address otherwise real time talk.<\/p>\n

Additionally, it shall be affirmed into Anjouan Gaming’s range of licenced companies. Discover our very own comment and you will check in so you can claim Apollot Slots’ indication-right up incentive today! Like the sister gambling enterprises, Apollo Slots also provides online slots games, blackjack, and you will web based poker for real currency and you will accepts dumps inside Southern area African rand (ZAR) through regional financial choice and cryptocurrencies.<\/p>\n

Which isn\u2019t a detrimental point expected, however it\u2019s things getting eager real money participants to take on ahead of fronting you to very first wager. Although not, before going considering they\u2019s every ordinary cruising, there\u2019s particular volatility facts we have to target, mainly exactly how hard it\u2019s to find the added bonus games. In advance of we have with the nitty gritty of the games possess and you will what symbol really does exactly what, we wish to discuss the aesthetics of this money position, as they\u2019re merely magnificent.<\/p>\n

Apollo Ports is just one of the leading web based casinos throughout the South African on line markets. That have several possibilities, SA people should expect a flaccid and reputable financial sense when financial support the account or withdrawing profits. Apollo Ports prioritizes secure purchases, using SSL security to safeguard players’ individual and financial research. OCR advantages scrutinized the brand new financial strategies, plus they are the SSL safe, tried and trusted.<\/p>\n

These types of codes aren\u2019t fixed and you can tend to change from every now and then, this\u2019s best if you double-check the details before-going to come and you will allege them. Apollo Ports keeps a variety of bonus codes available that will score the two of you put without put bonuses. The video game options on Apollo Ports Local casino isn\u2019t while the comprehensive while the what you\u2019d look for within most significant online casinos in Southern Africa.<\/p>\n

Such comprise of the local casino\u2019s T&Cs, problems regarding professionals, estimated revenues, blacklists, an such like. The better the security List, the much more likely you\u2019re to relax and play and you will receive your own profits without the products. Based on this type of markers, i have determined the safety Index, a get you to definitely summarizes our very own study of your protection and you may fairness off online casinos. Keep an eye out toward most recent Apollo Slots no-deposit incentive requirements 2026 and you will exclusive offers to make use of your time at this enjoyable gambling establishment. Whether or not your\u2019re also playing to the a mobile or pill, the Apollo Ports gambling establishment cellular website is receptive and simple so you can navigate, giving all of the provides along with safe sign on, depositing, and you can game play. Apollo Slots Local casino is especially preferred because of its Apollo Ports no put bonus 2024 and you will Apollo Harbors R400 extra codes, offering South African professionals an excellent increase to their bankroll from when they sign up.<\/p>\n

The best of these types of, are cent-slot-computers.com, for their tight zero-spam policy, so you could play safely and you can safely and will not ever before rating email junk e-mail. The new Wheel regarding Fortune gang of titles are hugely famous and you can almost every other classics become Twice Diamond, Triple Diamond, five times Pay and you can Triple Red-hot 777 slots. In the claims instead of regulated web based casinos, you can enjoy video game created by RTG, WGS and you can Betsoft, otherwise try sweepstakes casinos. In the usa, members during the regulated claims and additionally Nj-new jersey, Pennsylvania, Michigan, and you may West Virginia could play IGT slots the real deal currency during the authorized web based casinos instance BetMGM, Caesars, and you may DraftKings. When you have never ever starred it or really wants to re-live specific memory, all of our Lobstermania remark web page has a totally free video game you may enjoy without the need to install or put up app. A number of the old-school classics tend to be Money Storm, Absolutely nothing Eco-friendly People, Wolf Run, Pharaoh’s Chance, Texas Beverage.<\/p>\n

The greater your own prize multiplier, more successive wins you’ve got. The primary letters try a number of in love parrots, hens, and you will vultures just who flit and flap their method around the reels, belching the answer to highest wins. Position Birds are an entirely more game with regards to layout, however it\u2019s no less easy. Just choose one away from five cards, assuming they\u2019s more than new broker\u2019s, you\u2019ll double your finances.<\/p>\n","protected":false},"excerpt":{"rendered":"

No-deposit bonuses, totally free revolves, and you may deposit bonuses are some of the most sough-after bonus sizes. Including Progression Gambling, Practical Gamble, Wazdan, Tom Horn, CT Interactive, Apollo Video game, BF Online game, Tech4Bet, BigWin Game, Reel Kingdom, E-playing, Synot Game. Based on the sample i’ve conducted, we have\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-132053","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132053","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=132053"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132053\/revisions"}],"predecessor-version":[{"id":132054,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/132053\/revisions\/132054"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=132053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=132053"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=132053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}