/* 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":92324,"date":"2026-05-23T21:25:02","date_gmt":"2026-05-23T21:25:02","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=92324"},"modified":"2026-05-23T21:25:03","modified_gmt":"2026-05-23T21:25:03","slug":"some-are-easy-presenting-an-elementary-reel-concept-and-a-finite-number-of-paylines","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/some-are-easy-presenting-an-elementary-reel-concept-and-a-finite-number-of-paylines\/","title":{"rendered":"Some are easy, presenting an elementary reel concept and a finite number of paylines"},"content":{"rendered":"

Playing free slots during the Slotspod also offers an unmatched experience that combines activity, knowledge, and you may excitement-every with no investment decision. Online game such as Reels regarding Riches has several-layered incentive enjoys, and a mega Superstar Jackpot Walk you to definitely makes suspense with every twist. You can do this by the checking the new paytable, based in the slot’s details area, and this stops working symbol thinking, paylines, added bonus trigger, and you can special features. This type of online game element good fresh fruit icons, taverns, and fortunate sevens, with minimal paylines and easy rules.<\/p>\n

Wishing your an extraordinary date! One time I got double consecutively and you will none day made it happen check out the bonus display. Many times We spun extra cycles also it did not head to the advantage round. Your elizabeth, but when you do not modify, the video game feel and you can functionalities may be faster.<\/p>\n

At Let us Gamble Slots, you’re going to be happy to remember that there’s no registration inside it<\/h2>\n

They describe basically the way to earn significantly more revolves and victories, and exactly how to discover various other cycles. With each twist, you can rack up signs to earn 100 % free Spins individually, or discover incentive possess one prize additional revolves. Totally free Spins slots was unique cycles off additional revolves you might earn alongside normal advantages. Immediately after it is complete, your improve 1 step forward into the chart.<\/p>\n

This game concerns profitable big for the a 5?twenty three grid, loaded with enjoyable added bonus features and you will special signs. That have reducing-edge image, sensible animations, and you may in depth info, these slots transport players for the a full world of brilliant illustrations or photos and you may pleasant game play. Such totally free slot game usually ability several shell out outlines, Hamster Run<\/a> extra rounds, and you may unique icons, delivering a fantastic and you can aesthetically fantastic adventure. With their easy aspects, common icons like fruits, taverns, and you can sevens, and you will traditional three-reel configurations, antique slots bring a timeless and you will straightforward gambling experience. While happy and you can meet with the betting conditions, you can even keep payouts because an additional bonus.<\/p>\n

Below, there is certainly all types off slot you can enjoy in the Why don’t we Gamble Ports, followed by the latest plethora of extra has imbedded inside for every position also. This enables professionals to knowledgeable graced image, amazing animated graphics quality, and premium sound files without the need to install anything just before to try out a slot game. In lieu of some casinos on the internet that require you to definitely obtain most software before you can availability the variety of ports, at Why don’t we Enjoy Slots that isn’t a requirement. In addition, you will get confident with the fresh control board in the for each slot that can provide the border in terms of searching for the wished coin denomination otherwise number of paylines you would like to activate on every twist. Otherwise believe you to ultimately getting a specialist if this concerns online slots games, have no fear, as the to experience totally free harbors into the the site offers the newest advantage to first discover the incredible bonus enjoys infused to your per position.<\/p>\n

This is why, you can access all kinds of slot machines, that have one motif or possess you could consider. Take pleasure in most of the flashy fun and recreation out of Sin city regarding the comfort of your own home owing to the 100 % free slots zero down load collection. Top-rated websites for free harbors gamble in the us give game diversity, user experience and real cash access.<\/p>\n

Scroll as a result of our incredible on line position games, where you can wager various added bonus provides. Min ?10 deposit & ?10 bet place & paid in 30 days away from put at the min one\/2 odds (settled), excl. one month expiration off deposit. So many harbors but profits are very Rigid. Waiting your a wonderful big date!<\/p>\n

A few of their preferred titles, along with Cleopatra, Multiple Diamond, and you will Controls regarding Fortune, started since the land-depending slot machines. Its online game are notable for their higher-top quality image, imaginative enjoys, and large volatility. Thus, when you check out, you can quickly availability and you can play the hottest the newest online game. you get the chance to enter Supermeter setting, giving high profits and you can an effective jackpot off x6,000.<\/p>\n

Combining fun bonus rewards and spins with a mystical Egyptian theme, Cleopatra continues to be a greatest position games, despite getting launched more than about ten years ago. The fresh adventure of rotating the fresh reels while the ineplay is really what have players going back for lots more, even if the creature motif can appear quite dated. The very best gambling games readily available will provide users an excellent possibility to delight in better-high quality enjoyment and you can pleasing game play in place of expenses real cash. Mystical Ports is actually Mystical Lake’s 100 % free social local casino application giving genuine gambling enterprise favorites. The new tech storage or supply that is used exclusively for private statistical objectives.<\/p>\n

Any time you profit, you can play the profits on the flip from a coin<\/h2>\n

Improving your profits from the consolidating the fresh replacing fuel off wilds which have multipliers. Signs one to bring cash beliefs, have a tendency to accumulated throughout the added bonus possess otherwise 100 % free revolves to have instantaneous prizes. These could cause big victories, particularly through the free revolves otherwise added bonus rounds. A substitute for enjoy your earnings to have an opportunity to increase all of them, normally by the speculating colour otherwise suit from a low profile cards. It boosts the amount of paylines or a method to winnings, enhancing successful potential. Wins are molded because of the groups regarding coordinating signs pressing horizontally or vertically, instead of antique paylines.<\/p>\n

Twist enjoyment, twist for huge jackpots, twist to the best slots excitement! All of the video slot inside Slotomania are constructed to create your real gambling establishment exhilaration, away from classic Vegas harbors to brand-the brand new styled ports game. \ufffd Asian \ufffd Visit the newest world’s biggest region when you twist the fresh reels of your Western-styled ports. Simply assemble coins since you play \ufffd rating enough and you will probably change to a higher level! In that case, check out these slots, most of the presenting totally free revolves galore. \ufffd Slots which have Collection \ufffd Gather symbols as you gamble \ufffd assemble sufficient and you will probably bring about the bonus!<\/p>\n

For additional information about it, all of our Choosing an internet gambling establishment post talks about that which you have to do to have the better gaming feel you’ll. Make sure to have a look at web site’s very own remark and you will score in advance of to try out, and especially in advance of deposit money. To have ports game, simply find ‘Slots’ regarding the Games Type of filter, for example, then you can favor your own desired vendor and you will theme so you can whittle record off after that. The brand new ports and you can gambling games usually feature amazing picture and you can more difficult have than ever, which have builders playing with reducing-edge app to deliver an enthusiastic immersive betting experience. If you’d prefer to experience online slots and online casino games, you will also have more headings than before on how to prefer out of.<\/p>\n","protected":false},"excerpt":{"rendered":"

Playing free slots during the Slotspod also offers an unmatched experience that combines activity, knowledge, and you may excitement-every with no investment decision. Online game such as Reels regarding Riches has several-layered incentive enjoys, and a mega Superstar Jackpot Walk you to definitely makes suspense with every twist. You can\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-92324","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/92324","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=92324"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/92324\/revisions"}],"predecessor-version":[{"id":92325,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/92324\/revisions\/92325"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=92324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=92324"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=92324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}