/* 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":49158,"date":"2026-05-20T12:29:11","date_gmt":"2026-05-20T12:29:11","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=49158"},"modified":"2026-05-20T12:29:12","modified_gmt":"2026-05-20T12:29:12","slug":"familiarizing-oneself-having-slot-terminology-is-very-important-to-enhance-your-gaming-experience","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/familiarizing-oneself-having-slot-terminology-is-very-important-to-enhance-your-gaming-experience\/","title":{"rendered":"Familiarizing oneself having slot terminology is very important to enhance your gaming experience"},"content":{"rendered":"

By depending on our pro evaluations, you can with confidence choose a casino that suits your unique choices and needs. The objective is to try to make sure to gain access to reliable and you may trustworthy networks one focus on reasonable gamble and you can user satisfaction. Since the truth may vary, such incentives will mark inspiration out of classic arcade game, immersing participants for the thrilling skills-founded pressures. It imaginative auto technician relates to a previously-growing number of reels that remain broadening indefinitely with every winning spin. The brand new Infinity Reels ability brings up a groundbreaking design, pushing the new limitations of thrill and you may prospective.<\/p>\n

Brazil gamblers take pleasure in a wide variety of layouts, slots with a high RTPs and you will hit prices one enhance enjoyable and adventure. The fresh fast-moving, chance-depending characteristics means they are thrilling and you can exciting. With good 5?12 grid and you may twenty five paylines, the game has engaging artwork and you can added bonus features, together with 100 % free revolves as well as the Vampire Search bonus round you to definitely contributes to the winnings prospective. The lower volatility assures constant gains, and increasing wilds ability-together with re also-spins-contributes thrill. Having a good 5?twenty three grid and you will bright, jewel-filled reels, the game now offers a straightforward-to-know configurations.<\/p>\n

They stability highest-avoid framework top quality with enjoyable aspects and you may a good earn possible. Totally free slots provide a simple and exposure-free method to try out a game title while you are sustaining much of the newest adventure and you may enjoyable which comes of showing up in reels. These types of video game bring fun has such as cascading reels, free spins, and you may highest winnings possible. It’s the primary place to check on variations, explore added bonus series, and you can spin for the fun from it.<\/p>\n

Really slots work the same way, however it is constantly best to make sure you realize and learn the rules per that. After you get a hold of a casino slot games we would like to is actually it’s an easy task to start-off. Furthermore, they hire aside separate people to check the newest RNGs of one’s ports, that’s a familiar practice among online casino operators also. Credible application companies are always subscribed by the particular jurisdictions and their specialized regulators, in order to make sure the stuff is actually legally obtainable in the newest provided es is mostly obtainable in the brand new HTML5 structure hence adjusts to your tool screen size and you may functionality, thereby would free gamble and you may a real income ports.<\/p>\n

Exactly like social cloudbet app<\/a> gambling enterprises, sweepstakes gambling enterprises likewise have an online money used to their on line slots or any other casino games. Personal casinos are having professionals who want to have fun with common slots without the risk and apply at almost every other players. Discover well-identified programs including FreeSlots you to definitely multiple particularly online game to help you curious players. The web sites constantly don’t have any other features and are simply meant to bring a collection from totally free slots for anybody who would like to grab several revolves enjoyment or perhaps to try out their luck ahead of graduating towards real thing. Twist along their unique funny romance facts, offering Jackpots, Totally free Spins, and many frogs!<\/p>\n

“Cosmic Cat” is set in dimensions and “Sevens and you can Taverns” is about happy numbers. Classic ports will be the old-fashioned sort of slots which have set icons, reels and you will very first effective combinations. You’ll find different types you can find today like the vintage, video, good fresh fruit hosts, multiple-line ports, and you can slots which have modern jackpots. The fresh RTP can are as long as 96,40% which have a max win put at the x10,000.<\/p>\n

Gambling establishment.master is another way to obtain factual statements about online casinos and you can online casino games, maybe not subject to one gambling agent. An aspiring investment whose goal is to commemorate a and you will one particular responsible companies during the iGaming and present them the fresh recognition they deserve. A deck created to showcase our services geared towards bringing the vision from a much safer and transparent online gambling globe so you can reality. Most of the online game you could potentially use Casino Guru get into the course away from cellular online casino games.<\/p>\n

Totally free casino games operate on fun credit that will be constantly established towards sets, which are always set wagers. They enhance the general betting sense as a consequence of a persuasive motif, high-top quality artwork and you can songs to help put the feeling, would excitement and maintain your interested. The platform try modern, timely, and you will best for professionals seeking to precision and you can excitement. Most of the online casino games have the elements of enjoyable and adventure and you may we might suggest users so you’re able to branch away and check out new stuff.<\/p>\n

Gonzo’s Quest uses a keen explorer motif invest forest ruins, with stone reduces and you can cost icons substitution vintage position design. Many choices focus on in the web browser, as the 100 % free ports haven’t any obtain requirements, and you may sweepstakes\/public programs always remain anything fresh having day-after-day gold coins, promos, and you can spinning free gambling games sections very you aren’t stuck replaying a comparable a small number of headings. Such set plus count on luck to generate earnings, and therefore little can help you so you can dictate the outcome away from for every round. Because need for local casino slots became, therefore did the need for establishes one to offered not only payouts and activities. Plunge on the bright realm of fruits-styled harbors, We have strike the jackpot out of fun! All of our program integrates the latest thrill from personal local casino betting on the convenience of immediate access \ufffd zero packages, zero membership, simply absolute activities at your fingertips.<\/p>\n

Plunge towards field of free position video game without obtain otherwise registration and you can twist your way to help you enjoyable \ufffd right here from the Gamesville. Whether you are here to explore the brand new game or appreciate risk-free activity, all of our demonstration harbors send a seamless, no-problem experience. The fresh video game into the all of our platform have HTML5 structure and you can works towards any product, desktop or cellular. Yes, it\ufffds undoubtedly you’ll be able to to try out online slots at no cost into the a portable and you may a pill, for that matter. Sweepstakes casinos are another type of solution to delight in genuine-money-concept ports and online casino games versus betting on the old-fashioned sense. It\ufffds a giant step in off classic harbors, giving modern enjoys and you may major win prospective.<\/p>\n

Pick a class, to improve the fresh offered filters to the tastes, or seek a certain label<\/h2>\n

Looking legitimate low GamStop slot web sites means cautious research of several points. Harbors GamStop platforms demand rigid assistance to be certain equity, when you are non GamStop internet efforts by themselves. Concurrently, this type of systems offer tempting advertising, and make game play far more rewarding.<\/p>\n

Skills secret factors helps pages see reliable networks providing safer on the web gaming<\/h2>\n

Alternatively, you are able to enjoy \ufffdfor enjoyable\ufffd when you are that great thrill off real position play. We’re a team of elite slot participants and many from us love to play free slots on the internet, that’s the reason i were able to come up with including a great directory of free online game in this article. Totally free slots is starred only for fun, that’s their primary purpose.<\/p>\n","protected":false},"excerpt":{"rendered":"

By depending on our pro evaluations, you can with confidence choose a casino that suits your unique choices and needs. The objective is to try to make sure to gain access to reliable and you may trustworthy networks one focus on reasonable gamble and you can user satisfaction. Since 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-49158","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/49158","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=49158"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/49158\/revisions"}],"predecessor-version":[{"id":49161,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/49158\/revisions\/49161"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=49158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=49158"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=49158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}