/* 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":95334,"date":"2026-05-24T00:12:01","date_gmt":"2026-05-24T00:12:01","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=95334"},"modified":"2026-05-24T00:12:03","modified_gmt":"2026-05-24T00:12:03","slug":"cleopatras-luck-slot-comment-twist-the-benefit-controls","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/cleopatras-luck-slot-comment-twist-the-benefit-controls\/","title":{"rendered":"Cleopatras Luck Slot Comment Twist the benefit Controls"},"content":{"rendered":"

The newest ports are continuously released, bringing Canadian people having new, pleasing releases; zero down load, deposit, otherwise subscription is necessary. 100 percent free ports zero obtain no registration having incentive rounds commonly causes free revolves from the getting scatters otherwise wilds. Canadian participants appreciate a wide range of free online ports having zero obtain expected, giving quick gamble straight from the internet browsers. Best video slot company including Aristocrat, Playtech, NetEnt, or IGT give several headings geared to Canadian users.<\/p>\n

Common possibilities tend to be borrowing from the bank\/debit cards, e-wallets instance PayPal or Skrill, bank transfers, as well as cryptocurrencies. ✅ Prefer an authorized and you may safer internet casino \u2013 Always gamble at the trusted internet which have jackpot paradise<\/a> appropriate gaming certificates. Considering deciding to make the dive from playing demo ports enjoyment to real cash play? Whether you’re having fun with an iphone, apple ipad, otherwise Android smartphone otherwise tablet, you can enjoy smooth game play directly in your internet browser. Having 75+ 100 percent free games available, its talked about headings are Jammin\u2019 Containers, Shaver Shark, and Vintage Tapes. Dependent during the London this current year, Push Betting focuses primarily on cellular-optimized HTML5 ports with astonishing layouts and you can book technicians.<\/p>\n

The latest round retriggered while playing, resulting in 30 Free Spins total. You could potentially love to wager anywhere from $0.dos in order to $100 on every line. You determine to have fun with step one, 5, 9, 15, or 20 traces for each spin.<\/p>\n

From time to time you\u2019ll connect one which forces early in the day 100x. The base games is the price of entry. The base game alone, having fixed paylines without multiplier mechanics, just can’t produce you to threshold. Merely a bonus element you to carries the online game\u2019s upside. The new verified data confides in us which position have a standard base online game and a bonus round.<\/p>\n

When we speed a keen agent exactly how many casino games readily available is however extremely important, but other variables matter also. IGT enjoys a lengthy reputation of giving top quality and you may imaginative casino games. Therefore, besides do brand new Nuts help in getting an absolute consolidation and increases your own payment with the multiplier. Discover hardly any additional features, however, some tips about what can make a classic name similar to this fun.<\/p>\n

The online game is available at the both land-oriented an internet-based casinos, that have sizes for desktop computer and you may mobile phones. His knowledge of on-line casino licensing and incentives function the critiques are often up to date and we also function the best on the internet casinos for our internationally members. It free online slot are certainly RTG’s first clips harbors however, stays popular now, especially in the Australian and Us online casinos. If you’d like to find out more about this industry giant, click on this link to examine our very own required IGT casinos on the internet. Yet not, next launches have used today’s technology after the up with the big-rated on the web casinos’ fashion. The fresh new RTP having Cleopatra slot are 95.02%, which is lower than the web based business mediocre off 96.00% in the most common prominent totally free harbors in the online casinos.<\/p>\n

The Cleopatra games feels like any other IGT headings, in this this has high picture, an excellent animation, and chill tunes. Once you play Cleopatra on the web you have the Autospin key where you could potentially pick from ten, 20, 31, 40, or 50 automatic spins in one share. Sure, you could potentially play a Cleopatra slot trial online game in the casinos on the internet that allow 100 percent free use IGT harbors, since the demo is actually not available to your certified merchant\u2019s page. Sure, you could have fun with the free Cleopatra slot video game otherwise a real money sorts of IGT\u2019s best release from the web based casinos support IGT\u2019s software. Since you\u2019d anticipate, more fascinating a portion of the Cleopatra slot online gameplay is actually the brand new 100 percent free spins extra, however, this one is really a different extra.<\/p>\n

Browse to our selection of chose web based casinos and you may visit any of your preference. Out-of creating, she examines growing fashion regarding the online casinos and you may has discovering how game contour area and you can storytelling. Of myths so you can adventure to help you branded titles and non Gamstop Fluffy Favourites harbors, interested in a theme you like is vital.<\/p>\n

The latest Cleopatra on the web slot are an iconic slot machine put-out of the one of the primary and you can oldest studios\u2015IGT. To play the real deal, put \u00a3ten or more on a single of your of a lot safer, secure and you may instant payment tips and also you\u2019ll immediately rating an excellent enjoy incentive too. But you can also be victory more that during an individual games, because of the video game\u2019s bonus enjoys. For people who\u2019re-up having seeking this otherwise any kind of PlayOJO\u2019s 5,100000 online slots games, you can aquire 100 percent free spins to the a high position after you create your first deposit (terms and conditions apply).<\/p>\n

Immerse your self within the unique graphics, charming motif, and immersive sound-effects, making sure an interesting adventure from start to finish. You could begin free revolves added bonus caused by getting step three otherwise more scatter symbols to the reels. For every single icon are very carefully built to transport one to the fresh new old point in time and include a different touching into overall gaming sense. Which iconic games, crafted by IGT, has 5 reels and you may 20 paylines, providing exciting gameplay one never does not captivate. Really, the fresh new Cleopatra condition RTP try 95.02% constantly, about if you attempt to feel the first variety of. In terms of Cleopatra\u2019s sound recording, your won\u2019t discover a continuing blast of audio immediately after extremely earliest initiating this new online game.<\/p>\n

It is not easy to choose you to video game regarding the collection, but Controls off Chance Elegant Emeralds is a symbol of your trick importance of those game. So it studio is responsible for doing probably the most popular online game during the each other residential property-created casinos an internet-based casinos. If you prefer more enjoyable out of your harbors, this new game play enables you to upon you to definitely score also.<\/p>\n

You\u2019ll get a hold of such ideal slot company right here with a few off their best headings emphasized in this post. Just sign up for a beneficial Mecca Bingo account while\u2019ll feel spinning the latest reels during these amazing position video game in the future. Right here, you\u2019ll discover chosen online game throughout the most readily useful slot organization throughout the community.<\/p>\n

Having getting a few, three, 4 or 5 ones, professionals win 10, 100, a thousand, otherwise 50,100 coins respectively. Peak victory try ten,100 moments your own risk for those who belongings four Cleopatra symbols towards the a good payline. Harbors shall be fun, but definitely understand threats just before betting actual cash. Trying out keeps otherwise delivering a control to your game technicians right here are in the place of real money wagers. Any results you find on the trial is enjoyment, and never any pledge on what could happen within the a real-currency problem.<\/p>\n","protected":false},"excerpt":{"rendered":"

The newest ports are continuously released, bringing Canadian people having new, pleasing releases; zero down load, deposit, otherwise subscription is necessary. 100 percent free ports zero obtain no registration having incentive rounds commonly causes free revolves from the getting scatters otherwise wilds. Canadian participants appreciate a wide range of free\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-95334","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95334","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=95334"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95334\/revisions"}],"predecessor-version":[{"id":95335,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/95334\/revisions\/95335"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=95334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=95334"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=95334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}