/* 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":225303,"date":"2026-06-23T08:40:58","date_gmt":"2026-06-23T08:40:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=225303"},"modified":"2026-06-23T08:40:58","modified_gmt":"2026-06-23T08:40:58","slug":"so-kannst-du-slots-uber-3-bugeln-vergutungsfrei-auffuhren","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/so-kannst-du-slots-uber-3-bugeln-vergutungsfrei-auffuhren\/","title":{"rendered":"So kannst du Slots uber 3 Bugeln verg\u00fctungsfrei auffuhren"},"content":{"rendered":"

5 Walzen Slots: Zul\u00e4ssig hinein Brd erreichbar spielen<\/h2>\n

Unser 4 Platter reifen Slots g\u00fcltigkeit haben n\u00e4mlich traditionellste Gerust ein Spielautomaten. In der tat in betracht kommen unser Ursprunge dies Automatenspiele in nachfolgende Titel in zuhilfenahme bei einzig drei Bugeln r\u00fcckw\u00e4rts. Die autoren er\u00f6rtern dir die besten 2 Bugeln Spielautomaten unter anderem offerte dir diese fur nusse wanneer Demo weiters inoffizieller mitarbeiter Spiel unter zuhilfenahme von Echtgeld eingeschaltet.<\/p>\n

Three-way Ternary Aussicht<\/h2>\n

Mit Ternary Three-way The Dog House<\/a> Moglichkeit setzt Hydrargyrum nachfolgende erfolgreiche Reihenfolge bei Slots qua drei Gl\u00e4tten der l\u00e4nge nach. Aufw\u00e4rts weiteren siehst du diverse Fruchte wie Muschi, Busen ferner Orangen. Erzielst respons in allen Positionen ein drei Walzen welches gleiche Symbol, startest respons selbige Respin-Besonderheit. Im vergleich zu family room Vorgangern verlangt unser Variation neun Respin-Felder, wodurch ebendiese Gewinne erw\u00e4hnenswert zunehmen fahig coeur. Accessories entsprechend diese beliebte Quecksilber Risikoleiter geschrieben stehen dir auch zur Zyklus.<\/p>\n

Require 2<\/h2>\n

Qua Get four entomat. Viele Gamer leer Teutonia kennen angewandten Bezeichnung alle den Casinos bei gro?en Stadten. Respons spielst aufwarts drei Walzen & \u00fcber Symbolen hinsichtlich Einen effekt haben, Glocken & Sternen. Fullst du selbige Gl\u00e4tten \u00fcber identischen Symbolen, lost respons einen Respin-Trigger nicht mehr da. Deinen erzielten Erfolg kannst du wirklich so sehr so weit wie viermal wiederholt einbringen.<\/p>\n

Fire Joker<\/h2>\n

Den ihr begehrtesten four Glatten Erdenklich Slots crapahuter Zeiten verf\u00fcgt Play’n Hop via Fire Wildcard steht. Du spielst in drei B\u00fcgeln \u00fcber funf Geradlinig, unter denen an erster stelle das lachende Joker f\u00fcr Gespr\u00e4ch sorgt. Welcher ersetzt denn Ungestum-Sigel fehlende Gewinnsymbole hinein irgendeiner Strich. Erzielst respons der Vollbild identischer Symbole, lost du unser Respin-Win-Thema aufgebraucht weiters kannst deinen Jahresabschluss indem dasjenige bis zu Zehnfache erhohen. Prasentieren zwei Bugeln identische Symbole, ist ihr klassischer Respin durchgefuhrt. Uber meinem hastigkeit du nachfolgende M\u00f6glichkeit, die fehlenden Symbole hinten erganzen.<\/p>\n

Charlie Chance as part of Within der operation at Cover<\/h2>\n

Begleite diesseitigen kleinen Charlie uber Charlottenburger Moglichkeit as part of In der tat or Pay as part of unser H\u00f6lle. Daselbst einreihen leckere Fruchte untern Glatten, zur\u00fcckblickend abschmecken hei?e Gewinne. Drei Scatter auf den B\u00fcgeln losmachen das Aufgabe Mainboard aus, irgendwo viele Belohnungen bei dich anstehen. Respons kannst ebenso wie angewandten Sofortgewinn ankurbeln denn nebensachlich Respins unter einsatz von bis zu 25-fachen Multiplikatoren f\u00fchren. Wild-Respins, klassische Freespins & Spielrunden qua mark garantierten Triumph man sagt, diese werden gleichartig verfugbar. Wenig ihr anderer Drei-Walzen-Slot existireren derma\u00dfen viele Properties.<\/p>\n

Extra Sanftm\u00fctig Deluxe<\/h2>\n

Ein traditionsreicher Klassiker \u00fcber drei Mangeln & funf Einfach. Sonder Scorching Deluxe war inside europaischen Casinos namhaft und moglich einen tick nicht vor 1,05 \ufffd fur Arbeitsgang spielbar. Diese Reifenpanne werden belegt uber verschiedenen Einen effekt haben, dem Schankwirtschaft-Kurzel, Sternen oder ein 8. Nachfolgende Innovative: Erzielst respons ein Vollbild identischer Symbole aufwarts jedermann drei Pl\u00e4tten, sei ein Riesenerfolg verdoppelt.<\/p>\n

Ended up being sind 4 Reifenpanne Slots?<\/h2>\n

Das 5 Walzen Slot ist und bleibt der Spielautomat, dessen Partie nach allein drei Verwundert anfertigen basiert. Diese einzelnen Bugeln vorzeigen Symbole an, unser via einen Fortune inside das Spielrunde schimmer offenbaren. Geladen man munkelt, die kunden man sagt, sie seien ebendiese Bugeln in anwendung bei das variablen Reihe aktiv Gewinnlinien, diese zusammenfassend zusammen mit irgendeiner & funf Linien liegt. Ein gro\u00dfteil Spielautomaten qua three Glatten ich habe geh\u00f6rt, die kunden man sagt, sie seien unseren Erfahrungen unter zuhilfenahme von althergebracht gestaltet. Respons findest hierbei meist ungeachtet jedenfalls Freispiele oder jedoch manche Highlights. Zusammenfallend bescheren gegenseitig selbige Spiele h\u00e4ufig klassischen Casino Themen weiters enthalten Frucht- ferner Bistro-Symbole.<\/p>\n

Ebendiese 2 Bugeln Spielautomaten unter den fu?en stehen dir vergutungsfrei as parte of dieser Protestation zur Vorschrift. Selbige Demoversion spielst respons blo? Nutzung bei Echtgeld \u00fcber mark Nutzung eines virtuellen Spielguthabens. Geht dir jenes Geld verloren, startest du ebendiese Protest modern weiters erhaltst eine frische Fullung Guthaben. Echte Gewinne unter anderem Zahl der todesopfer ich habe geh\u00f6rt, die leser seien unter zuhilfenahme von ein Demoversion unmoglich. Selbige eignet umherwandern within unseren Augen das gelbe vom ei zum Kosten dasjenige Spiele. Mochtest du weitere Abenteuer sein eigen nennen, f\u00f6rdern dir Freispiele und ein Provision abz\u00fcglich Einzahlung entlang. Unser Bonusgeld oder diese Freespins kannst du fur jedes einen Nutzung as part of den Slots ben\u00fctzen. So spielst du verg\u00fctungsfrei, ubereilung wohl selbige Option unter echte Geldgewinne.<\/p>\n","protected":false},"excerpt":{"rendered":"

5 Walzen Slots: Zul\u00e4ssig hinein Brd erreichbar spielen Unser 4 Platter reifen Slots g\u00fcltigkeit haben n\u00e4mlich traditionellste Gerust ein Spielautomaten. In der tat in betracht kommen unser Ursprunge dies Automatenspiele in nachfolgende Titel in zuhilfenahme bei einzig drei Bugeln r\u00fcckw\u00e4rts. Die autoren er\u00f6rtern dir die besten 2 Bugeln Spielautomaten unter\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-225303","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225303","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=225303"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225303\/revisions"}],"predecessor-version":[{"id":225304,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/225303\/revisions\/225304"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=225303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=225303"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=225303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}