/* 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":163722,"date":"2026-06-22T12:04:59","date_gmt":"2026-06-22T12:04:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=163722"},"modified":"2026-06-22T12:04:59","modified_gmt":"2026-06-22T12:04:59","slug":"gamble-harbors-on-the-internet-free-of-charge","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/gamble-harbors-on-the-internet-free-of-charge\/","title":{"rendered":"gamble Harbors on the internet free-of-charge"},"content":{"rendered":"

You won’t need to obtain application to tackle totally free harbors in spill Sugar Rush 1000<\/a> the event that you don’t want to. If you head to one of our needed web based casinos best today, you may be to experience free slots within a few minutes. Totally free behavior will set you up the real deal currency game off this new line! You can look at some 100 percent free game in this post, however, this is not the only place to gamble free harbors. Of trying out 100 percent free slots, you can even feel like they\u2019s time for you to proceed to real cash gamble, exactly what\u2019s the real difference? Utilized in extremely position online game, multipliers increases an effective player’s earnings by around 100x the fresh original amount.<\/p>\n

In the event that a gambling establishment couldn\u2019t ticket all four, they didn\u2019t result in the record. That\u2019s precisely why i oriented which number. The creators whom lead one’s heart out of Vegas ports online game give your other 100 percent free slot experience with some Aristocrat societal gambling games which you like! Step for the Cashman\u2019s on the web personal gambling enterprise, claim the 5 MILLION Free Digital Coins, and enjoy the 100 percent free virtual spins on all of the incredible on the internet slot machines within ports eden! They work similarly to GCs; truly the only distinction is that you could get their Sc payouts.<\/p>\n

Most of the the releases excel with regards to awesome picture and you will entertaining incentives and they are designed for one another desktops and you may smart phones. The fresh new games have quite appealing added bonus attributes which can be mostly depicted of the 100 percent free spins and you may a spherical where new earnings is also getting increased. The automated gaming servers regarding the Austrian team stand out with their simple legislation and you may numerous templates. Video slot machines put-out by the Playtech possess achieved a lot of prominence among players since they has a premier RTP and you may good high version of themes and you will incentives.<\/p>\n

Get ready for an online Light Christmas having on the web free ports eg the latest Christmas time Luck slot game. These types of games stay true to your iconic film and television shows and have extra cycles around the chief letters. Laden with bonuses, play-100 percent free slots such as for instance Aztec Luxury because of the Pragmatic Wager amazing animations and an effective unique to tackle experience. Sense Norse myths and you will Asgard that have multiple free spin incentives. Enjoy these free harbors to tackle soundtracks and you may amazing animated graphics. Enjoy the previous change in order to in the-home online game activities and discover the top layouts already governing brand new realm of free harbors.<\/p>\n

Don\u2019t ignore, you can even check out the gambling enterprise evaluations for many who\u2019lso are seeking 100 percent free casinos so you’re able to down load. Whether you are wanting free slot machines with 100 percent free spins and you may incentive series, for example labeled slots, or antique AWPs, we\u2019ve got you protected. Multi-way ports as well as honor honours to possess striking identical signs for the adjacent reels. As to the reasons gamble 40 or 50 paylines whenever you can utilize the entire screen?<\/p>\n

Enjoy happy ports online game away from HUUUGE Connect and you may profit Jackpot such as for instance hardly any other.Subscribe A pub And you can Contend Within the Billionaire Group! Enjoy HUUUGE Hook \u2013 a set of five slot machines you to display a really HUUUGE Huge Jackpot. Respin Farm \u2013 Earn Respin and strike Producers Jackpot Bucks Madness \u2013 Strike Huuuge Jackpots within vintage queen away from Slots! More than 100 On-line casino GAMESOur Online casino has the benefit of amazing harbors video game, away from classic classics to progressive slots, inspired from the real ports!<\/p>\n

Extremely slots provides set jackpot wide variety, hence depend just about how much you choice. That have free revolves, scatters, and you will an advantage get auto technician, this video game might a hit that have anybody who features slots one to pay daily. Which have 20 paylines and you may normal free revolves, this steampunk label will certainly sit the exam of your energy. Having richer, greater picture and much more engaging possess, this type of 100 percent free gambling enterprise slots provide the ultimate immersive feel.<\/p>\n

When you find yourself willing to wager real cash, i’ve a thorough range of fair gambling enterprises that do deal with people out-of signed up jurisdictions and is the in depth towards web page. Contemplate, you don\u2019t need to install people software otherwise fill out one subscription models to tackle, as well as all of our online game try free to play. Slotorama allows people international have fun with the online game it like risk-free. People slots having enjoyable extra series and you will huge labels try popular with ports players. I merely pick out an educated gambling internet from inside the 2020 you to already been full of numerous amazing online position online game.<\/p>\n

But not, it\u2019s nonetheless a good idea to learn the overall game before you purchase anything on it. It is a fact you to harbors try random and you may wear\u2019t need any enjoy. After you\u2019lso are to try out totally free ports, you\u2019ll have the ability to trigger good \u201cwin\u201d off digital money. Free ports have all of the same bells and whistles and you will layouts as his or her a real income alternatives. Once you enjoy free gambling establishment harbors, you\u2019ll reach feel the enjoyable features and you may layouts of video game. Local casino.expert is actually another supply of information regarding casinos on the internet and casino games, not subject to people gaming user.<\/p>\n

three-dimensional harbors grab the graphic and narrative sense to another height that have movie graphics and you may animated graphics. Finest Megaways titles, eg Light Rabbit and additional Chilli, function flowing wins, extra shopping, and you can broadening reels. Megaways harbors fool around with an energetic reel auto technician to send many otherwise thousands of paylines. Modern jackpots are the most useful payment online slots with regards to to help you big, growing jackpots. This site focuses mostly into free online slots, however, don\u2019t forget about a real income designs either.<\/p>\n

Even though this could possibly get rely on a liking, picture and you can sound effects are recognized to gamble a vital role for the online slots. Far more paylines make you a far greater likelihood of profitable, when you are varying choice products fit various other budgets. You will find a captivating bouquet regarding 100 percent free demonstration Megaways harbors out of reputable application business noted on our very own web site and in addition we strongly recommend you try them away. It means you discover so much more incentive has actually, and you will probably triggering extra free spins, multipliers and you may expanding signs. This type of online slots provides dynamic reels in lieu of a predetermined matter out-of paylines, which increases the chances of profitable.<\/p>\n

With a 5\u00d7step 3 grid and you may twenty five paylines, the video game includes interesting visuals and added bonus has actually, along with free revolves additionally the Vampire Have a look extra bullet one adds on earn possible. With so many themes readily available\u2014if thrill, dream, or antique good fresh fruit machines\u2014there\u2019s no reason to be happy with something that doesn\u2019t spark the attention. They boost the entire gaming sense compliment of a compelling motif, high-high quality illustrations or photos and you may songs to assist set the feeling, create excitement and continue maintaining your involved. When it\u2019s thrilling incentive series otherwise captivating storylines, this type of online game are very enjoyable no matter what you play. To relax and play they feels like viewing a movie, and it\u2019s difficult to top the brand new exhilaration out of seeing all those added bonus has actually light up. We take a look at the video game mechanics, extra provides, commission frequencies, and much more.<\/p>\n","protected":false},"excerpt":{"rendered":"

You won’t need to obtain application to tackle totally free harbors in spill Sugar Rush 1000 the event that you don’t want to. If you head to one of our needed web based casinos best today, you may be to experience free slots within a few minutes. Totally free behavior\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-163722","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/163722","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=163722"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/163722\/revisions"}],"predecessor-version":[{"id":163725,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/163722\/revisions\/163725"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=163722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=163722"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=163722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}