/* 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":12894,"date":"2026-05-08T01:11:58","date_gmt":"2026-05-08T01:11:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=12894"},"modified":"2026-05-08T01:12:00","modified_gmt":"2026-05-08T01:12:00","slug":"why-gamble-40-otherwise-fifty-paylines-if-you-can-utilize-the-entire-monitor","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/why-gamble-40-otherwise-fifty-paylines-if-you-can-utilize-the-entire-monitor\/","title":{"rendered":"Why gamble 40 otherwise fifty paylines if you can utilize the entire monitor?"},"content":{"rendered":"

It provides 99 paylines, tumbling reels, totally free revolves and you will gains as high as 2,000x your stake<\/h2>\n

Regardless if you are looking 100 % free slot machine games that have free spins and you will incentive series, like labeled harbors, or classic AWPs, there is your protected. Knowledgeable home-dependent business, such IGT and you may WMS\/SG Betting, and also have on line brands of its 100 % free casino ports.<\/p>\n

But not, a similar headings by exact same online game designer have a similar technical pointers such as categories of signs, paylines, features, etc. Along these lines, you’ll progressively restrict your solutions in order to slots you to often give good results. 100 % free ports are fantastic means for beginners understand just how position video game work and also to discuss all of the during the-online game enjoys. Whether you’re an informal spinner or a seasoned athlete, our very own demo ports send Las vegas-style thrill with no bet. Having Play Totally free Slots No Obtain, you have made immediate access in order to countless games right from the web browser. All shall be played for the demonstration means free-of-charge.<\/p>\n

The realm of slot machine was huge, featuring various themes, paylines, and added bonus have. Beginners is familiarize by themselves with different video game auto mechanics, paylines, and you can added bonus enjoys without any pressure off economic losings. Yay Casino enjoys many societal gambling enterprise ports, desk video game, and you will bonus cycles off ideal-tier games organization.<\/p>\n

You could potentially enjoy 100 % free slots on line on the our very own website Slotjava rather than registering<\/h2>\n

The organization serves legalized casinos and has now come among the better developer offering inbling locations around the world. To try out free ports on the internet even offers the ability to get the game’s unique tips and you can special features without having any financial chance. Even although you enjoy in the demonstration means at an on-line gambling establishment, you can simply look at the webpages and select “wager fun.” You will find a directory of thousands of totally free demonstration ports readily available, and then we continue on adding a lot more weekly.<\/p>\n

This type of company make sure the games was engaging, aesthetically tempting, and you will operate efficiently, bringing an enjoyable gambling feel getting on the internet position fans. One of the most significant benefits of to tackle betandyou-hr.com\/hr-hr<\/a> totally free slots is the opportunity to practice and create skills. I try to offer a comprehensive and you can thrilling place to play, together with the basics of online slots, as well as their pros, designs offered, and you can strategies for increasing the latest playing sense. A great deal more video game are added several times a day, according to certain application company offering their new releases. Take your time to explore all of our detailed collection and attempt out our very own 100 % free position demonstration games and find out yours preferred.<\/p>\n

Furthermore, you could capitalise to your extra has the benefit of that include its choices. Online slots will let you choose from different slot offerings from the exact same games supplier. Following change the songs don and doff, see whether the newest special bonus rounds float your ship or perhaps not, etc.<\/p>\n

The latest prompt-paced, chance-dependent nature makes them thrilling and you may pleasing. The new clear image and you can appealing extra enjoys make the Bloodstream Suckers II slot a standout option for fans off spooky slots and you may the individuals trying to large profits. That have an enthusiastic RTP of 96.1%, Starburst stays a popular choice certainly British players because of its eternal focus and you may fascinating payouts. The fresh new medium volatility provides the newest gameplay enjoyable without being also volatile.<\/p>\n

Which have IGT’s big selection of online slots, it’s difficult to ascertain those you ought to enjoy. The brand new designer have ventured on the mobile gambling enterprise gambling offering a variety out of ports, dining table games, and so you can cellular pages. When you find yourself from the a keen IGT slot machine game, you will enjoys a fantastic gambling sense. We favor gambling enterprises having obtainable banking solutions, it is therefore easy for that deposit and start to tackle. IGT slots are some of the top international \ufffd each other on the internet and traditional \ufffd and it is all the as a result of many years of that have a few of the longest status slot machines for the casino floor.<\/p>\n

Regardless if you are seeking to admission committed, talk about the new titles, otherwise get more comfortable with online casinos, free online ports provide a simple and easy fun answer to enjoy. Since no-deposit otherwise wagering is required, they are accessible, low-tension, and you can ideal for beginners and you can knowledgeable participants exactly the same. Modern jackpots are honor pools that develop with each wager put, providing the possible opportunity to winnings large sums when brought about. Be sure to enjoy responsibly and relish the fun arena of slots! Within this section, we will explore the fresh new steps in place to guard members and exactly how you could potentially ensure the newest ethics of the harbors your gamble. To your multitude of casinos on the internet and you will video game available, it’s imperative to know how to ensure a secure and you can fair betting experience.<\/p>\n

So it access makes free gambling games a stylish choice for both the fresh new and you can experienced people. Cellular gambling enterprises often give various classic and alive specialist desk games tailored for touchscreen gadgets, raising the user experience. Cellular models off desk video game such as black-jack and you may roulette ensure it is pages to enjoy a seamless gaming feel to their cell phones and you may pills.<\/p>\n

That implies you can enjoy free ports on the the site with zero subscription otherwise packages necessary. The finest-ranked totally free ports gambling enterprises most of the bring intelligent cellular possibilities, which you yourself can availableness on the iphone otherwise Android os through the casino’s cellular website or devoted app. This short article can be useful when e. Firstly, try playing totally free ports that have a return to member (RTP) payment over the 96% mediocre to have online slots. Ports is games away from options, however, there are numerous what you should was when to try out totally free slots that bling for real money. Come across greatest web based casinos offering 4,000+ gaming lobbies, daily incentives, and you can free revolves also provides.<\/p>\n

Gambling enterprises for example Wild Gambling establishment, offering more 350 online game, give a varied gang of the newest harbors and you may progressive jackpots to own an exciting feel. Among these greatest contenders, DuckyLuck Casino has the benefit of an exceptional gaming feel because of its professionals. During the 2026, users in the us normally soak by themselves regarding the safest online casinos and you may talk about the world of online wagering within times, thanks to the stamina regarding on line contacts.<\/p>\n

That it escalates the number of paylines otherwise a way to profit, improving profitable ventures. Wins try formed because of the clusters of matching signs coming in contact with horizontally otherwise vertically, as opposed to antique paylines. That it generates anticipation because you progress into the creating satisfying added bonus series.<\/p>\n

Permits payouts by themselves of paylines. The game has 5th-reel multipliers, free revolves that have boosted winnings possible, and you may a simple build rendering it obtainable when you are nonetheless giving solid upside. If you prefer to relax and play playing films slots on the internet, the group of games cannot leave you searching for.<\/p>\n","protected":false},"excerpt":{"rendered":"

It provides 99 paylines, tumbling reels, totally free revolves and you will gains as high as 2,000x your stake Regardless if you are looking 100 % free slot machine games that have free spins and you will incentive series, like labeled harbors, or classic AWPs, there is your protected. Knowledgeable\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-12894","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/12894","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=12894"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/12894\/revisions"}],"predecessor-version":[{"id":12895,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/12894\/revisions\/12895"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=12894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=12894"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=12894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}