/* 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":32578,"date":"2026-05-17T19:23:38","date_gmt":"2026-05-17T19:23:38","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=32578"},"modified":"2026-05-17T19:23:39","modified_gmt":"2026-05-17T19:23:39","slug":"100-percent-free-harbors-online-play-10000-slots-free-of-charge","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/100-percent-free-harbors-online-play-10000-slots-free-of-charge\/","title":{"rendered":"100 percent free Harbors Online Play 10000+ Slots Free-of-charge"},"content":{"rendered":"

It’s your ultimate place to go for playing and you can live activities. To hit an absolute streak, we\u2019ve integrated titles instance Betting Arts\u2019 Pi\u00f1atas Ol\u00e9™, AGS\u2019s Rakin\u2019 Bacon™, Lightning Box\u2019s 100x RA™, and you can Aruze\u2019s Moving Panda Luck™. We\u2019re very happy to establish this new types of the able to enjoy internet casino. Prepare to commemorate all 2 hours which have Free gold coins, and you will enhance your profits by the finishing everyday quests! Choose from over 100 of the very prominent position games off brand new local casino floors, featuring titles regarding IGT, Ainsworth, Konami™, Everi, Aruze, and a lot more!<\/p>\n

Totally free practice tend to set you up the real deal money online game off the latest range! Included in really position game, multipliers increases a player’s payouts by the as much as 100x brand new brand new count. This particular feature the most popular advantages discover into the free online ports. When you are brand spanking new to betting, free online slots portray the best way to learn about just how to try out slots. To try out an informed online slots is an excellent treatment for test a selection of online game instead of committing huge amounts off bucks. Free slots no install are useful if you want to avoid cluttering their equipment, because you create which have downloading several different gambling establishment factors.<\/p>\n

Once Dollars Splash, much more about online slots games entered the business, therefore the iGaming industry has expanded rapidly since then Among the initial and most memorable online slot machines, Dollars Splash, was launched inside 1998. For the innovation of the web sites about 1990’s, the first web based casinos started to work and offer online slots.<\/p>\n

A key auto technician ‘s the Mystery Heap feature, in which stacked signs build and you will let you know a similar icon across the a reel which will make large wins. 888 Casino<\/a> Which framework brings steady pressure and you will serves participants exactly who see function-motivated ports that have unexpected larger winnings. Gains is cause streaming reels and you may added bonus have such as the Beautiful Spin Controls and totally free spins which have broadening multipliers. You\u2019lso are prepared to receive the brand new feedback, qualified advice, and exclusive even offers right to your own inbox.<\/p>\n

It\u2019s eg reeling inside the a prize hook \u2014 there\u2019s always you to definitely adventure off anticipation with each digital throw. Practical Play\u2019s Large Bass Splash continues this new precious Big Bass series, delivering right back new familiar fishing excitement which includes brand new unexpected situations. Slot builders are often moving the latest limits, performing the game that bring fresh adventure to the reels. This approach, which was broadening inside the popularity, can lead in order to more frequent earnings and will be offering a new spin to the common slot feel. It\u2019s a lot like plunge for the a side trip in the good games \u2014 something else entirely and you may entertaining one getaways within the typical revolves and have your on the foot.<\/p>\n

Their within the-breadth training and you can clear insights promote users top analysis, providing him or her get a hold of finest games and casinos for the ultimate gambling sense. It\u2019s entirely safer to relax and play online slots for free. That it symbol appears at random anyplace towards the reels. Continue a crazy West thrill to your Dog House \u2013 Zero Canine Left behind by the Pragmatic Play, offering 5 reels and 20 paylines. Improve your winnings from the leading to the latest 100 percent free Spins element and determine to own Multiplier symbols up to dos,500x.<\/p>\n

Regarding bright arena of on the web playing, free slots have emerged because a well-known choice of activity getting both beginners and you will experienced players. Possess thrill out of playing 100 percent free ports with our vast library away from online casino games. Often solution will enable you to play free slots with the wade, to gain benefit from the adventure away from online slots regardless of where you are actually. Make sure you below are a few all of our recommended online casinos to the most recent standing. Our professional group regarding writers provides sought after the top 100 percent free online slots offered to provide you with the best of the new stack.<\/p>\n

New evident image and you will enticing incentive possess make Bloodstream Suckers II position a talked about selection for fans away from spooky ports and you can those people trying to large earnings. With an effective 5\u00d73 grid and you may twenty-five paylines, the overall game comes with enjoyable photos and you may bonus features, along with 100 percent free revolves as well as the Vampire Appear bonus round that contributes for the winnings prospective. That have a good 5\u00d7step 3 grid and you can vibrant, jewel-occupied reels, this game also offers an easy-to-know settings. Starburst of the NetEnt are a cherished classic in the world of online slots, noted for their convenience and you can excellent photos. Which thrill-motif slot offers a special blend of urban humor which have a great classic Disney state of mind. Having safe, managed programs offering reasonable play, online slots games is an enjoyable, safer, and rewarding selection for of numerous.<\/p>\n

Before you could twist very first slot, capture your own 15,one hundred thousand,000 Money Anticipate Incentive first off your ports adventure. Sign up more than 100 million professionals spinning to the two hundred+ premium ports, with fresh new position video game additional per month. Here, nonstop Vegas pleasure, enormous jackpots, and you will enjoyable casino games collide in the #step 1 free-to-enjoy slots online game internationally!<\/p>\n

Within Slotspod, we try to add the players with the newest and greatest into the position playing. “Le Viking” by the Hacksaw Playing is anticipated to help you immerse people during the Norse escapades. Why don’t we look closer at these superior headings and you may what’s nearby to possess 2025. These new slots provides put a different standard in the business, pleasant members through its immersive layouts and you can fulfilling game play. “Tombstone” lead people to help you a dark Crazy Western form filled up with outlaws and you will sheriffs, presenting unique auto mechanics for example xNudge Wilds that may end in ample winnings.<\/p>\n

The days are gone of effortless totally free spins and you will wilds; industry-best titles now might have all of the a style of inflatable incentive series. Haphazard reel modifiers can cause as much as 117,649 a method to profit, having modern titles will exceeding that it matter. The truth is why these online game all over the Vegas gambling enterprises and you may the internet ports are the same in any ways, therefore no wonder he or she is popular. The very best of the best online slots, chosen getting by the all of our admirers – wager totally free We’re going to improve precision of Geo-Internet protocol address technical program by giving constant standing.<\/p>\n

However, among headings that has been particularly well-known into the sweepstakes surroundings is superb Pigsby, an excellent gangster-styled slot laden up with extra prospective and feature-inspired game play. However, the overall game you to definitely perhaps sits towards the top of Betsoft\u2019s really identifiable headings is actually Gladiator, an excellent Roman Kingdom\u2013styled slot motivated of the legendary motion picture. Betsoft has established a strong reputation historically because of its cinematic demonstration build, delivering aesthetically steeped, 3D-driven slots that end up being similar to entertaining online game than antique reels. We examined free online slots away from all of the following the studios and totally trust the online game. Playson slots excel for their challenging math models, regular bonus has, and you will highest-times technicians you to carry out especially well throughout the sweepstakes casino environment. The major online slots games playing 100percent free have a tendency to started of better position studios.<\/p>\n

Twist this new reels, discuss fun templates, and you may shot incentive enjoys rather than investing a penny. All of the game keeps particular extra has actually which make it more inviting to professionals. Progressive slots is out of several systems in addition to totally free and you will paid, vintage and you can videos ports, 3d, fresh fruit, Las vegas online game, having or instead of jackpot etcetera.<\/p>\n","protected":false},"excerpt":{"rendered":"

It’s your ultimate place to go for playing and you can live activities. To hit an absolute streak, we\u2019ve integrated titles instance Betting Arts\u2019 Pi\u00f1atas Ol\u00e9™, AGS\u2019s Rakin\u2019 Bacon™, Lightning Box\u2019s 100x RA™, and you can Aruze\u2019s Moving Panda Luck™. We\u2019re very happy to establish this new types of the\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-32578","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32578","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=32578"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32578\/revisions"}],"predecessor-version":[{"id":32579,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32578\/revisions\/32579"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=32578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=32578"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=32578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}