/* 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":58302,"date":"2026-05-20T13:52:29","date_gmt":"2026-05-20T13:52:29","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=58302"},"modified":"2026-05-20T13:52:30","modified_gmt":"2026-05-20T13:52:30","slug":"the-brand-new-10-finest-ports-games-to-own-android-os","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/the-brand-new-10-finest-ports-games-to-own-android-os\/","title":{"rendered":"The brand new 10 Finest Ports Games to own Android os"},"content":{"rendered":"

Although not, if you’d like, you can obtain the latest software rather. Simply discover your browser, stream the video game, while\u2019lso are up and running. There\u2019s together with zero down load needed for people Slotomania slot machines.<\/p>\n

Personal computers ran conventional about 1990s towards the earliest online gambling establishment launched during the 1994, viewers enjoyed the new technique for playing on line, and the online casino markets simply erupted by season 2000, participants had more than 200 online operators to select from. However, you will find zero a real income replace you’ll be able to, and folks create buy new software in advance of downloading could take set. You may i become blamed when endless hours of the finest gambling establishment gaming options set when you look at the hold off? Zero subscription, zero getting necessary our free ports are ideal for people which take pleasure in gaming enjoyment, people wanting to explore the enormous set of online slots and you will anyone who would like to attempt numerous ports ahead of splashing their cash because of the to try out for real bucks. The game only imitates the brand new video slot step and won’t be certain that triumph inside a bona-fide gambling establishment otherwise with real slots.That it casino games is very absolve to gamble many elective in-game activities will demand fee. Great each and every day rewards no adverts an abundance of video game so you’re able to picked out-of I would suggest downloading this free slot software…you might not be disappointed !<\/p>\n

Spin whenever, anyplace, and take pleasure in continuous excitement that have incentive revolves, dail\u2026 Easy hitting the latest gambling enterprise ports JACKPOTS! More than 30M packages, 80K initial Totally free Potato chips, 100% Free Texas holdem Web based poker! Local casino SLOT step and JACKPOT th\u2026<\/p>\n

There are even no constraints on limit wagers otherwise online game weightings, as opposed to real-money gambling establishment incentives. Social gambling applications are made generally getting entertainment and you can wedding, that have a pay attention to completing missions and you can getting together with most other pages. Viewing advertising is yet another supply of significantly more credits, and you can downloading almost every other applications regarding exact same journalist can also earn more gold coins in some circumstances. Members usually can express the victory, large victories and you may done missions that have family and friends through public mass media programs including Twitter. Although this eliminates the likelihood of losing tough-made currency, the newest disadvantage is because they you should never withdraw people payouts. Despite less get out of cuatro.3 celebs, this social betting app has a lot of merits.<\/p>\n

These harbors usually rotate to ancient texts one support the trick to huge gains. Finding out how jackpot ports performs can boost their playing experience and make it easier to choose the right games for the fantasies. Whether you’re inside it to the constant enjoyment and\/or large victories, understanding the volatility can raise your overall gambling experience. These represent the extremely erratic game that may see you chase the greatest profits into the knowing that victories was less common.<\/p>\n

Local casino Protector keeps wishing a listing of this new 30 most useful social position programs for android and ios you could obtain to own without the two preferred application areas. This can produce a getting into the games and you may find out how Demo Casino app<\/a> it truly does work versus risking any of your individual money. Make sure you take a look at fine print of every incentive otherwise promotion ahead of claiming they, you know exactly that which you\u2019re entering. When you’re taking as well trapped regarding online game and you can shedding monitoring of day otherwise money, it\u2019s time to grab a break. To start with, always keep in mind one gaming ought to be done getting entertainment intentions merely.<\/p>\n

As an alternative, play with shell out-outs speed, rates of purchases, and you will customer support because factors on your decision making. Someone else try not to share with you incredible 100 percent free loans otherwise position incentives, nevertheless the online game is actually a winner. Specific gambling enterprises give great position incentives, but their gameplay contains the poor sense. To tackle for real currency payouts will get a risky question in the event it becomes an obsession. For people who\u2019lso are a professional user, you could opt for high bet game. It is recommended that you create an account that have affordable choice in the event the you\u2019re also an amateur.<\/p>\n

Take pleasure in bigger wins, reduced and you will easier game play, enjoyable new features, and you will incredible quests. Hi Josh, sorry you then become by doing this towards online game. A lot of harbors however, winnings are incredibly Tight. Prepared you an extraordinary time! You may choose to change this game, but when you do not revise, your own video game sense and you may functionalities are less.<\/p>\n

Various other huge difference would be the fact online casinos constantly offer a larger diversity of slot game, giving the pro a great deal more options to choose from. If that is their situation, perchance you could make usage of no-deposit gambling establishment incentives, that may make you a chance to winnings some cash as opposed to being required to purchase any of your individual. A good thing accomplish would be to check out all of our listing out-of best slots web sites and select one of many greatest solutions. Zero download otherwise subscription is required, nevertheless are at least 18 yrs . old to experience gambling games, even in the event it is free of charge. This type of will feature modern websites and you can fascinating gambling enterprise added bonus offers having this new members, however, make sure you see our recommendations ahead of registering. But not, if you think prepared to gamble harbors for real money, you’ll have to look for an online casino.<\/p>\n

Bet365 is a worldwide commander inside the on line betting, giving a thorough band of cellular position video game, wagering, or other casino properties. BetMGM is a leading cellular gambling enterprise in the united states, offering many slot games away from finest team. The new gambling establishment also provides an enormous group of cellular position game, along with private headings and cellular harbors games with a high RTP. The award-successful mobile app provides a seamless playing sense, making it a premier choice for cellular slot lovers. New gambling establishment has the benefit of a variety of video game regarding most useful team, also big incentives and advertising. LeoVegas is known for the comprehensive number of cellular position video game and you will affiliate-amicable program.<\/p>\n

He brings during the-depth study on everything from slots and you will casino bonuses so you’re able to innovative payment steps and you will technical advancements. Very provide into the-app orders for extra coins otherwise benefits, however these is actually optional. The brand new online game be on enjoyment you need to include added bonus rounds, mini-video game, and you may collectables to keep game play fascinating. As well, free harbors apps like those about this list offer game play which have virtual gold coins only. A successful harbors application should harmony enjoyment, show, and you may equity.<\/p>\n

To begin with, the position trial you\u2019ll come across on this page is a great \u201cfree position.\u201d In the event they\u2019s made by a real-currency slot copywriter, instance White & Ask yourself or IGT. Ongoing log on rewards and you will spinning promotions allow it to be simple to remain spinning regarding the few days. Firstly, the site servers preferred titles such as for example Grand Buffalo Keep & Earn and you can Dragon Testicle, plus a deep index out of feature-heavy ports one continue game play feeling new the example. All of the demo in this article (560+) is actually a totally free slot you could potentially enjoy without install or subscription. Internet casino harbors try an excellent option for large activities to have Canadian people. Online slots are really easy to gamble, wanted little skill or approach \u2014 just spin and hope for the best.<\/p>\n","protected":false},"excerpt":{"rendered":"

Although not, if you’d like, you can obtain the latest software rather. Simply discover your browser, stream the video game, while\u2019lso are up and running. There\u2019s together with zero down load needed for people Slotomania slot machines. Personal computers ran conventional about 1990s towards the earliest online gambling establishment launched\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-58302","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/58302","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=58302"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/58302\/revisions"}],"predecessor-version":[{"id":58303,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/58302\/revisions\/58303"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=58302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=58302"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=58302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}