/* 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":32094,"date":"2026-05-17T14:25:59","date_gmt":"2026-05-17T14:25:59","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=32094"},"modified":"2026-05-17T14:26:00","modified_gmt":"2026-05-17T14:26:00","slug":"regal-harbors-slot-have-fun-with-the-neogames-gambling-enterprise-game-free-of-charge","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/regal-harbors-slot-have-fun-with-the-neogames-gambling-enterprise-game-free-of-charge\/","title":{"rendered":"Regal Harbors Slot Have fun with the NeoGames Gambling enterprise Game free of charge"},"content":{"rendered":"

We have secure all of the fundamental areas of Royal Ports one are entitled to getting mentioned, and also you today know exactly what to https:\/\/efbet-casino.gr\/<\/a> expect in the event you giving this video game a try. You to definitely particularity away from Royal Ports is that there isn’t any real paytable offered, so no actual solution to investigate selection before gaming. Follow on the fresh Autoplay tab found at the beds base proper-hand place of your own video game screen to change your setup in respect to match your individual build.<\/p>\n

Although some promotions are on-supposed, others is additional getting specific occurrences particularly Halloween night, Mother\u2019s Big date, Bank Vacations otherwise Christmas time. Most of these game come from different game team, thin online game-enjoy, winnings, and you will graphics are different.The best video game to try out are observed from the Scrape and you will Arcade collection. Within the Enjoys Case, love to play of all of the ports, jackpot harbors, 100 percent free spins harbors, extra bullet harbors, multi ways extra harbors, stacked wilds harbors, tumbling reels slots or mouse click me personally slots…. Each of these areas keeps sub-kinds to really make the gaming experience fun and simple. The stand alone system lets users have the advantage away from a premier betting feel compliment of large-top quality image and you can eye-finding activities.<\/p>\n

Big hitters such as NetEnt and you may Red Tiger Betting submit the newest collection. Although you claimed\u2019t gain access to as much selection as the various other on the internet gambling enterprises, there\u2019s an abundance out of enjoyable headings to enjoy. It will be pays alot more awareness of the caliber of its video game collection as opposed to wide variety.<\/p>\n

Lead to peak profit inside position from the getting 5 top spread symbols in regal top added bonus round, awarding up to 200x total bet. Admirers away from adventure and finding-themed online game also delight in the ebook out of Ra position, which offers similar game play depth and you can eternal interest. Users also can accessibility that it name owing to multiple respected Ontario on the web gambling enterprises, making certain fair play, quick payouts, and you can a safe feel. That it version need signing up from the a legal on-line casino and you can finishing KYC criteria, along with ages verification. Red-colored sevens inside the Royal Revolves free online slot afford the highest, awarding 1000x the total choice to own landing 5 complimentary symbols into this new reels. Symbols is crowns, reddish sevens, plums, bells, apples, cherries, etcetera., split into high-expenses and you may low-value groups.<\/p>\n

Wanting a delicate and you may fascinating answer to gamble casino games in your mobile phone? You can get to the live cam team 24\/7 hence makes you get quick replies to simple matters. Individuals wanting an excellent mobile local casino in the united kingdom usually prosper choosing Slots Royale. You have an excellent partners an approach to filter out from the online game along with seeing typically the most popular titles otherwise newly extra ones.<\/p>\n

There was a set of scratch cards right here which can be best for when you want to relax. But not, if you find yourself just looking to unwind with effortless online game, up coming we are able to also help you out. Baccarat people will find all that they want offered right here, in addition to online game that have roadmap scorecard and you can top bets, while making to tackle way more fun.<\/p>\n

Before you could purchase anything, browse the paytable part of the Ports Royale casino software. For taking an extended break, turn on exception configurations getting a certain amount of time. To safeguard their \u00a3, you might place restrictions how far you could potentially get rid of into the your account. To try out excess can result in bad activities, so means limitations assists in maintaining anything under control.<\/p>\n

You may choose to bet on as much computers since you will love simply by clicking close to the device that you should get a hold of or unselect. Royal Slots try gaming the on their amazing gameplay, and will also be astonished at just how easy it really is in the long run. Every slot game is actually enhanced to possess cell phones, making it possible for simple gameplay without packages. Sure, people can earn real cash, specifically courtesy jackpot slots and added bonus have you to definitely raise payout prospective. Consider, harbors can handle recreation \u2014 benefit from the adventure if you are residing in manage. Effective at the Royal Gambling establishment isn\u2019t only about fortune \u2014 it\u2019s on possess that boost your chances and maintain game play active.<\/p>\n

Since you talk about the type of ports, you are destined to select of numerous such video game and just have a beneficial blast as well. Video harbors always promote a variety of incentive provides, some of which are made to bring the newest layouts your. We have numerous video slots to pick from with additional layouts than simply you could possibly believe. Today there was antique slots with a variety off templates and many it is pleasing enjoys, instance free revolves, multipliers and you will selecting video game. As a consequence of our limitless room, the audience is able to assembled a massive distinctive line of video game out of a few of the best developers on the market.<\/p>\n

Every bet that each player renders results in brand new jackpot pool, which\u2019s not unusual for you to come across this video game giving up jackpots worth a lot of money. The fresh picture is made inside the good cartoony artwork design, and it also keeps an old gaming spin that have icons which feature 7s, cherries, bells and you will crowns. Royal Revolves has the benefit of members a on the internet playing knowledge of two unique added bonus has and you will a great medieval theme. Slots Forehead is made for people that need to sample the brand new games before having fun with real limits or maybe just appreciate a dependable webpages because of their slot adventures. Click Gamble now and you may plunge on field of Regal Joker for the opportunity to winnings big and luxuriate in most useful-tier playing enjoyment. These systems are known for their reliability, user-amicable connects, and you may a beneficial band of slot online game.<\/p>\n

Uncover how the Bunny Royale slot game services can raise the exhilaration away from real money gaming. It\u2019s it really is fascinating to look at rabbits event and you may expanding its earnings. Photo your self getting an effective twenty-five,000 minutes their wager count within position game presenting mutated rabbits equipped towards the pearly whites, with weapons and you can a farm setting meaning providers.<\/p>\n

The mobile application aids numerous percentage procedures, together with significant borrowing\/debit cards, e-wallets, and frequently cryptocurrencies. Whether you are travelling, leisurely yourself, otherwise for the a primary crack, the fresh new Regal Gambling enterprise application can make gaming smoother and you can fascinating. Luckily, there are plenty of other available choices available to choose from that you could like to give you exceed Regal Top fast.<\/p>\n

To experience and you can success regarding online game do not mean future profits at the real money gaming. There\u2019s constantly new things and you will exciting inside Dollars Royal! \u2022 Like an effective LION LANTERN and you will gain brand new Keep & Twist Feature or even the Free Video game Feature.\u2022 The newest Flames PHOENIX slot machine produces huge honors which have added bonus have.\u2022 Have the magnificence of one’s ancient business once you see SCARAB JACKPOTDOWNLOAD Today & Wager Totally free!<\/p>\n

Order keys to own means the fresh choice value and you will activating the machines are located less than. Because of the hitting the required servers, participants can pick what amount of hosts so you can bet on. Royal Slots is based greatly to the the creative game play, hence contrary to popular belief actually is quite simple. The overall game earns the \u201croyal\u201d title due to its feminine and you may higher level boudoir mode.<\/p>\n","protected":false},"excerpt":{"rendered":"

We have secure all of the fundamental areas of Royal Ports one are entitled to getting mentioned, and also you today know exactly what to https:\/\/efbet-casino.gr\/ expect in the event you giving this video game a try. You to definitely particularity away from Royal Ports is that there isn’t any\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-32094","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32094","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=32094"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32094\/revisions"}],"predecessor-version":[{"id":32095,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/32094\/revisions\/32095"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=32094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=32094"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=32094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}